比如
时间是15点55分,那么显示的就是16点00分。
时间是16点08分,那么显示的就是16点15分。
时间是16点19分,那么显示的就是16点30分。
// =======================分割线=================
下面是我采用的方式,能达到需求,但是感觉写的很繁琐,虚心请教更简便的写法~
function formatBeginTime(beginTime){
let time = new Date(beginTime);
let minute = time.getMinutes();
if (minute > 0 && minute <= 15) {
time.setMinutes(15);
}
if (minute > 15 && minute <= 30) {
time.setMinutes(30);
}
if (minute > 30 && minute <= 45) {
time.setMinutes(45);
}
if (minute > 45) {
time.setMinutes(0);
time.setHours(time.getHours()+1);
}
return time.getTime();
}
需求是向上的话,if判断删除,直接执行true的操作就行了.
这么操作的好处是,可以不用考虑跨天,跨月,跨年的时候比较复杂的逻辑,通过时间戳来操作,获取的直接就是一个时间对象,再转换成自己想要的格式就可以了.
修改了一下代码匹配需求.
我们把关注的点定在15分钟一个轮回上,通过取余数实现
utc时间戳的起点是1970/1/1 00:00:00
所以每过15分钟就会增加900秒,js时间戳增加
15*60*1000
实际上我们是在寻找距离当前时间戳最近的,下一个能被
15*60*1000
的数.减掉除不尽的部分,再加上
15*60*100
就完事儿了.