【问题标题】:How to set 00:00:00 using moment.js [duplicate]如何使用 moment.js 设置 00:00:00 [重复]
【发布时间】:2016-04-18 04:09:21
【问题描述】:

我想获取当前日期,但时间应该是00:00:00.000

我试过这个:

var m = moment();
m.set({hour:0,minute:0,second:0,millisecond:0});
console.log(m.toISOString());

但我有:2016-01-12T23:00:00.000Z 为什么是 23 而不是 00?

【问题讨论】:

  • 你可以排除,如果你不想要时间。保持 00:00:00 的真正意图是什么
  • @Venkatraman 我今天需要毫秒。
  • 你可以只使用moment().startOf("day");(如果你需要的话,可以在两者之间使用可选的.utc())。
  • startDate.utcOffset(0); startDate.set({ 小时: 0, 分钟: 0, 秒: 0, 毫秒: 0, });
  • @nawazanjum 这完全是公认的答案。

标签: javascript momentjs


【解决方案1】:

Moment.js 将日期存储为 UTC,并且可以对其应用不同的时区。默认情况下,它应用您的本地时区。 如果要在 utc 日期时间设置时间,则需要指定 utc 时区。

试试下面的代码:

var m = moment().utcOffset(0);
m.set({hour:0,minute:0,second:0,millisecond:0})
m.toISOString()
m.format()

【讨论】:

    【解决方案2】:
    var time = moment().toDate();  // This will return a copy of the Date that the moment uses
    
    time.setHours(0);
    time.setMinutes(0);
    time.setSeconds(0);
    time.setMilliseconds(0);
    

    【讨论】:

    • 我想要当前日期,但时间应该是 00:00:00
    • moment().startOf('day') 怎么样?它将时间设置为当天的开始。
    【解决方案3】:

    您尚未展示如何创建字符串 2016-01-12T23:00:00.000Z,但我假设是通过 .format()。

    无论如何,.set() 使用的是您当地的时区,但时间字符串中的Z 表示zero time,也称为UTC。

    https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

    所以我假设您的本地时区距离 UTC 23 小时?

    saikumar's answer 展示了如何将时间加载为 UTC,但另一种选择是使用 .format() 调用,该调用使用您的本地时区而不是 UTC 输出。

    http://momentjs.com/docs/#/get-set/
    http://momentjs.com/docs/#/displaying/format/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多