【问题标题】:How can i apply offset to UTC time based on the browser time zone .? [duplicate]如何根据浏览器时区将偏移量应用于 UTC 时间。? [复制]
【发布时间】:2020-11-28 04:44:26
【问题描述】:

我有一个 Angular 5 项目。我有 UTC 日期,我试图在本地浏览器时区打印它。我正在使用 momentjs 库。但是我发现我的代码没有将偏移量应用于 UTC 时区。如果您能提供帮助,我将不胜感激。 我的项目在 stackblitz 中可用

https://angular-wtj1rj.stackblitz.io/

https://stackblitz.com/edit/angular-wtj1rj?embed=1&file=src/app/app.component.html

在 app.component.ts 中这是我正在使用的转换函数

 print( item:HistogramDistribution ) {
    return " UTC time: " + item.dateRange + " Local time: " + moment.utc(item.dateRange).format("YYYY-MM-DDTHH:mm:ss");
  }

但是这会打印出来

UTC time: 2020-07-01T13:00:00.000+0000 Local time: 2020-07-01T13:00:00

我希望结果如下,因为我比 UTC 时区早一小时。 我的时区是爱尔兰 (GMT+1)..

UTC time: 2020-07-01T13:00:00.000+0000 Local time: 2020-07-01T14:00:00

非常感谢您能提供帮助 谢谢

【问题讨论】:

    标签: angular momentjs


    【解决方案1】:

    当您使用 moment.utc(...) 时,生成的时刻被标记为 UTC - 对其进行后续方法调用(例如 format)会将其视为 UTC 并进行相应的格式化。

    如果你想在当地时间,你可以打电话给local()。它仍然代表同一时间点,但随后对format 等的调用会将其视为当地时间。

    在您的示例中,这将为您提供所需的输出:

    moment.utc(item.dateRange).local().format("YYYY-MM-DDTHH:mm:ss")
    

    Updated example

    文档https://momentjs.com/docs/#/manipulating/local/

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多