【问题标题】:conversion for unix timestamp to moment js not working properly in chrome将 unix 时间戳转换为时刻 js 在 chrome 中无法正常工作
【发布时间】:2017-08-07 20:49:24
【问题描述】:

这段代码:

let obj = moment.unix(1459382400).utc();

在 Firefox 54 中运行良好,但在 Chrome 59.0.3071.109 中无法运行。在 Firefox 中,它返回 Date 2016-03-31T00:00:00.000Z,这是正确的日期,但在 Chrome 中,它返回 Wed Mar 30 2016 20:00:00 GMT-0400 (CDT),这是正确日期的前一天。

我一直在寻找解决方案,但没有成功。 1459382400 unix 时间戳没有时间,但在 chrome 中却有。

我错过了什么。

【问题讨论】:

  • 时刻没有错,时刻代表一个时间点,2016-03-31T00:00:00.000Z 和 Wed Mar 30 2016 20:00:00 GMT-0400 (CDT) 都代表同一时刻。我不得不解决这个问题,因为我无法找到解决方案,无论是官方时刻文档还是网络上的解决方案。

标签: javascript google-chrome firefox momentjs unix-timestamp


【解决方案1】:
function setTimezone(moment, timezone) {

var a = moment.toArray(); // year,month,date,hours,minutes,seconds as an array

moment = moment.tz(timezone);

moment.year(a[0])
    .month(a[1])
    .date(a[2])
    .hours(a[3])
    .minutes(a[4])
    .seconds(a[5])
    .milliseconds(a[6]);

return moment; // for chaining
};

var m = setTimezone(moment('2014-03-10T10:00'), "America/New_York");
console.log(m.format())

使用此功能

使用前,请考虑更新时刻。最新版本已修复此问题

【讨论】:

  • 感谢您的回复...我有最新版本的时刻...今天的版本。我不需要使用时区...只需日期。
  • 日期错误,因为时区错误。看到 chrome 显示 gmt -4 而我实际上比 UTC 时间晚了 4 小时。添加 4 小时会将其转换为下一个日期。修改此函数,因为您只想获取日期
  • 这正是我想要的,从等式中删除时区
  • @assembler remove timezone from equation mean ?
  • 先生。 @Shubham Singla 这意味着在创建对象时从时刻对象中删除时区。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2011-12-24
  • 2018-07-30
  • 2013-04-07
相关资源
最近更新 更多