如何使用Moment JS获得24小时制

时间:2018-10-30 17:30:24

标签: javascript reactjs

这是一天中所有时间的正确方法吗?有更好的方法吗?还请记住,如果这些时间段之间有时间间隔,我将使用该时间段进行比较。谢谢!

    const startAndEndTimes =[
        {startTime: apptDate.setHours(1, 0, 0), endTime: apptDate.setHours(2, 0, 0)},
        {startTime: apptDate.setHours(2, 0, 0), endTime: apptDate.setHours(3, 0, 0)},
        {startTime: apptDate.setHours(3, 0, 0), endTime: apptDate.setHours(4, 0, 0)},
        {startTime: apptDate.setHours(4, 0, 0), endTime: apptDate.setHours(5, 0, 0)},
        {startTime: apptDate.setHours(5, 0, 0), endTime: apptDate.setHours(6, 0, 0)},
        {startTime: apptDate.setHours(6, 0, 0), endTime: apptDate.setHours(7, 0, 0)},
        {startTime: apptDate.setHours(7, 0, 0), endTime: apptDate.setHours(8, 0, 0)},
        {startTime: apptDate.setHours(8, 0, 0), endTime: apptDate.setHours(9, 0, 0)},
        {startTime: apptDate.setHours(9, 0, 0), endTime: apptDate.setHours(10, 0, 0)},
        {startTime: apptDate.setHours(10, 0, 0), endTime: apptDate.setHours(11, 0, 0)},
        {startTime: apptDate.setHours(11, 0, 0), endTime: apptDate.setHours(12, 0, 0)},
        {startTime: apptDate.setHours(12, 0, 0), endTime: apptDate.setHours(13, 0, 0)},
        {startTime: apptDate.setHours(13, 0, 0), endTime: apptDate.setHours(14, 0, 0)},
        {startTime: apptDate.setHours(14, 0, 0), endTime: apptDate.setHours(15, 0, 0)},
        {startTime: apptDate.setHours(15, 0, 0), endTime: apptDate.setHours(16, 0, 0)},
        {startTime: apptDate.setHours(16, 0, 0), endTime: apptDate.setHours(17, 0, 0)},
        {startTime: apptDate.setHours(17, 0, 0), endTime: apptDate.setHours(18, 0, 0)},
        {startTime: apptDate.setHours(18, 0, 0), endTime: apptDate.setHours(19, 0, 0)},
        {startTime: apptDate.setHours(19, 0, 0), endTime: apptDate.setHours(20, 0, 0)},
        {startTime: apptDate.setHours(20, 0, 0), endTime: apptDate.setHours(21, 0, 0)},
        {startTime: apptDate.setHours(21, 0, 0), endTime: apptDate.setHours(22, 0, 0)},
        {startTime: apptDate.setHours(22, 0, 0), endTime: apptDate.setHours(23, 0, 0)},
        {startTime: apptDate.setHours(23, 0, 0), endTime: apptDate.setHours(24, 0, 0)},
    ]

1 个答案:

答案 0 :(得分:1)

我不认为Moment.js具有返回这样的时间数组的功能,因此您可能走在正确的轨道上。但是,Moment.js函数的工作方式是使您调用它们的对象发生变异(即更改)。因此,在代码中,您基本上是一遍又一遍地设置apptDate对象的时间。

幸运的是,您可以简单地通过与另一个moment()调用:const newMoment = moment(oldMoment);进行解析来克隆Moment.js对象。

此外,您可以通过使用for循环来迭代地完成工作,从而使代码更加简洁和易于阅读。

const startAndEndTimes = [];
for (let i = 0; i < 24; i++) {
  startAndEndTimes.push({
    startTime: moment(apptDate).set({hour: i, minute: 0, second: 0}),
    endTime: moment(apptDate).set({hour: i + 1, minute: 0, second: 0})
  });
}