【问题标题】:Do not consider user timezone [duplicate]不考虑用户时区 [重复]
【发布时间】:2019-08-26 17:40:30
【问题描述】:

我在约会方面遇到了麻烦。

注意:我进入欧洲/罗马时区。

我有以下日期

....
new Date("2019-04-03T00:00:00+02:00")

 it returns:  Wed Apr 03 2019 00:00:00 GMT+0200 (Ora legale dell’Europa centrale)
....

如果我在我的 PC 上更改时区 (GMT -4),它会返回,例如,

....
new Date("2019-04-03T00:00:00+02:00")
 it returns:  Tue Apr 02 2019 18:00:00 GMT-0400 (GMT-04:00)
....

我想要做的是将日期 (2019-04-03T00:00:00+02:00) 到用户日历而不考虑用户时区(即使它在加拿大我想在用户日历上显示欧洲/罗马时区。

你有什么建议吗?

谢谢

【问题讨论】:

  • 控制台中显示的日期“Tue Apr 02 2019 18:00:00 GMT-0400 (GMT-04:00)”与您传入的日期完全相同, “2019-04-03T00:00:00+02:00”。如果要显示用户所在时区的日期和时间,请在该时区中格式化日期。
  • @Heretic Monkey 不是复制品。

标签: javascript angularjs datetime


【解决方案1】:

通常,您只想将日期用作 UTC,并在显示它们时将它们转换为您想要的任何 TZ。 UTC in js

Moment 很适合这些东西,

const moment = require("moment-timezone")
const now = moment.utc()
const nowButItsInYourTimezone = now.tz("Europe/Rome")
console.log(now.format()) // utc date
console.log(nowButItsInYourTimezone.format()) // gmt + 2, of the same date

【讨论】:

    【解决方案2】:

    您可以使用moment.jsmoment-timezone.js 来实现结果。

    let ny = moment().tz("Europe/Rome").format();
    
    console.log(ny);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 2021-12-26
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多