【问题标题】:How to get 24 hour time with moment js如何使用时刻 js 获得 24 小时时间
【发布时间】:2018-10-30 17:30:24
【问题描述】:

这是获取一天中所有时间的正确方法吗?有更好的方法吗?还要记住,我将使用这个时隙来比较这些时隙之间是否有时间。谢谢!

    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)},
    ]

【问题讨论】:

  • moment.js 24h format的可能重复
  • .setHours() API 只关注一个数字。此外,这些调用会修改日期;他们不返回新的日期。因此,您的代码只是一遍又一遍地修改一个日期实例;所有的开始时间和结束时间都将完全相同。
  • 感谢您的回复,但如何将其与时隙进行比较?
  • 那么 JS 是否会逐行修改该日期?
  • 是的,.setHours() 更改了日期,但没有创建日期。

标签: javascript reactjs


【解决方案1】:

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

幸运的是,您可以轻松地克隆 Moment.js 对象,只需使用另一个 moment() 调用:const newMoment = moment(oldMoment); 解析它。

此外,您可以通过使用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})
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 2015-06-09
    • 1970-01-01
    相关资源
    最近更新 更多