首页 > 解决方案 > Javascript 根据新日期仅获得偶数小时周期

问题描述

根据实际时间(例如 01/08/2018 à 12:03:56),我只需要偶数小时(下一个期间和当前时间):

const getEvenHoursFromDate = (date) => {
 return {
   nextSlice,
   previousSlice
  } 
 }

getEvenHoursFromDate(new Date())

输出 :

{
  nextSlice : '14:00:00-01/08/2018',
  previousSlice: '12:00:00-01/08/2018'
} 

标签: javascriptdate

解决方案


就个人而言,我不建议使用非标准格式进行日期表示。如果是 ISO 格式就更好了。并且在javascript日期实例中比任何文本演示都好

function pad(num, prefix = '0'){
	return (prefix + num).slice(-2);
}

function dateFormat(date){
	return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}-${pad(date.getDate())}/${pad(date.getMonth())}/${date.getFullYear()}`;
}

function normalizeDate(date, step, add = 0){
	let hour = Math.floor(date.getHours() / step) * step + add;
	let result = new Date(date.valueOf());
	result.setHours(hour, 0,0,0);
	return result;
}

function getPeriods(date, format = d => d){
	return {
		next: format(normalizeDate(date, 2, 2)),
		current: format(normalizeDate(date, 2))
	}
}

//formatted
console.log(getPeriods(new Date(), dateFormat));
//as date instances
console.log(getPeriods(new Date()));


推荐阅读