【问题标题】:Time zone offset showing incorrect date and time时区偏移显示不正确的日期和时间
【发布时间】:2019-03-08 07:27:55
【问题描述】:

我正在尝试根据用户本地时区显示时间。服务器节省时间到 UTC。

所以,我的数据库中保存了一个日期时间。

2018-10-03 05:55:51 // my server is digital ocean

所以现在我正在尝试控制本地时间的用户。我的时区设置为 Sylhet Bangladesh 时间偏移为-360

var offset = new Date().getTimezoneOffset();
console.log(offset) // offset is -360
var testDateUtc = moment.utc("2018-10-03 05:55:51");
var localDate = moment(testDateUtc).utcOffset(offset);
console.log(localDate.format("YYYY-DD-MM hh:mm:ss"));

上面的代码打印的日期不正确,但时间正确。 2018-02-10 11:55:51 日期错误。

然后我将我的 mac 时区更改为 Dubai,即 2 hours different then my country

对于迪拜,偏移量是-240,它显示时间 2018-03-10 01:55:51 这意味着日期正确但时间不正确。

请帮忙。谢谢。

编辑 它适用于我这样测试的大多数国家 offset = Math.abs(offset) 所以它总是积极的

【问题讨论】:

  • 如果我理解的话,实际上日期是对的。如果从 05:55 中减去 6 小时,则为前一天的 11:55(PM)。对不起,如果我错过了重点。
  • 如果您担心日期,也许您的意思是 YYYY-MM-DD hh:mm:ss 而不是 YYYY-DD-MM hh:mm:ss

标签: javascript timezone momentjs timezone-offset


【解决方案1】:

您无需考虑偏移量。 Moment 可以为您做到这一点:

moment.utc("2018-10-03 05:55:51").local().format()

另外,请记住,当您在代码中请求偏移量时,您请求的是 当前 偏移量,这可能是也可能不是您转换时有效的偏移量.请参阅the timezone tag wiki 中的“偏移量!= 时区”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多