【问题标题】:momentjs and converting to unix gives wrong datemomentjs 并转换为 unix 给出了错误的日期
【发布时间】:2014-01-11 18:01:46
【问题描述】:

让 momentjs 以正确的方式将日期转换为 unix 有点麻烦:

var start = new Date(2013,11,2);
console.log('Start date: '+start);
console.log('Unix date: '+moment(start).unix());
console.log('Unix date 2: '+moment(start).add('hours', 1).unix());

Start date: Mon Dec 02 2013 00:00:00 GMT+0100 (CET)
Unix date: 1385938800
Unix date 2: 1385942400

http://jsfiddle.net/7Equ2/4/

但在 http://www.onlineconversion.com/unix_time.htm 中输入转换后的 unix 日期会返回 Sun, 01 Dec 2013 23:00:00 GMT,而添加 1 小时会返回正确的 unix 日期。我想这是因为开始日期是在 CET(我的语言环境时区)中创建的。所以我想我需要将开始日期作为 UTC 传递,但我必须保留日期值(即它应该仍然是“Mon Dec 02 2013 00:00:00”)。但我无法弄清楚如何。

我试过了

moment(start).utc().unix(), 

但这似乎没有任何区别,因为它仍然返回 Unix 日期:1385938800

如何让它返回正确的 unix 日期?

【问题讨论】:

  • 你想要this吗?
  • 谢谢。更正了网址

标签: javascript date datetime momentjs


【解决方案1】:

时间戳没有时区。它们都与 UTC 相关。

Sun, 01 Dec 2013 23:00:00 GMT 等于 Mon Dec 02 2013 00:00:00 GMT+0100 如果您将秒转换为 UTC .解决方案包括 moment-timezone 并为所有 moment 对象选择默认时区。

moment.tz.setDefault("UTC");

https://momentjs.com/timezone/

https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多