获取下一次遵守时间格式而不是以前的时间
Get the next time that respect a time format and not a pervious one
我正在尝试获取下一个“6:00:00”的时间,我正在使用时刻:
let shiftEnd = moment("06:00:00", "HH:mm:ss")
console.log(shiftEnd.inspect())
它给我上一个 6:00:00,与 now()
同一天的那个。
moment("2017-07-31T06:00:00.000")
now()
是:
moment("2017-07-31T12:20:57.076")
获得尚未过去的下一个早上 6 点的最佳方法是什么?
您可以使用day
方法得到当前星期几,然后将星期几加一得到明天星期几:
var now = moment(), day;
// check if before 6 am get the current day, otherwise get tomorrow
if(now.hour() < 6)
day = now.day();
else
day = now.day() + 1;
然后为了获得明天早上 6 点,使用 isoWeekDay
从星期几中获取 moment 对象并将小时设置为 6,将分钟和秒设置为 0:
var tomorrow = moment().isoWeekday(day).hour(6).minute(0).second(0)
明天2017-08-01T06:00:00+02:00
您正在获取当天的 moment 对象,因为正如 moment Default 部分所述:
You can create a moment object specifying only some of the units, and the rest will be defaulted to the current day, month or year, or 0 for hours, minutes, seconds and milliseconds.
您可以简单地测试您的 moment 对象是否在过去(如果需要,使用 isBefore
) and add
1 天。
这是一个活生生的例子:
let shiftEnd = moment("06:00:00", "HH:mm:ss")
if( shiftEnd.isBefore(moment()) ){
shiftEnd.add(1, 'd')
}
console.log(shiftEnd.inspect())
console.log(shiftEnd.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
我正在尝试获取下一个“6:00:00”的时间,我正在使用时刻:
let shiftEnd = moment("06:00:00", "HH:mm:ss")
console.log(shiftEnd.inspect())
它给我上一个 6:00:00,与 now()
同一天的那个。
moment("2017-07-31T06:00:00.000")
now()
是:
moment("2017-07-31T12:20:57.076")
获得尚未过去的下一个早上 6 点的最佳方法是什么?
您可以使用day
方法得到当前星期几,然后将星期几加一得到明天星期几:
var now = moment(), day;
// check if before 6 am get the current day, otherwise get tomorrow
if(now.hour() < 6)
day = now.day();
else
day = now.day() + 1;
然后为了获得明天早上 6 点,使用 isoWeekDay
从星期几中获取 moment 对象并将小时设置为 6,将分钟和秒设置为 0:
var tomorrow = moment().isoWeekday(day).hour(6).minute(0).second(0)
明天2017-08-01T06:00:00+02:00
您正在获取当天的 moment 对象,因为正如 moment Default 部分所述:
You can create a moment object specifying only some of the units, and the rest will be defaulted to the current day, month or year, or 0 for hours, minutes, seconds and milliseconds.
您可以简单地测试您的 moment 对象是否在过去(如果需要,使用 isBefore
) and add
1 天。
这是一个活生生的例子:
let shiftEnd = moment("06:00:00", "HH:mm:ss")
if( shiftEnd.isBefore(moment()) ){
shiftEnd.add(1, 'd')
}
console.log(shiftEnd.inspect())
console.log(shiftEnd.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>