更改默认时区后,如何在本地时间设置时刻格式

How do you format a moment in local time after changing the default timezone?

本文关键字:时间 设置 格式 时刻 默认 时区      更新时间:2023-09-26

我有一个时间戳,我用momentjs:格式化它

moment("2015-03-24T09:47:31.042Z").format("LLL Z")
"March 24, 2015 10:47 AM +01:00"

由于我们应用程序的性质,我们为momentjs设置了一个默认时区,它会影响所有渲染的时刻:

moment.tz.setDefault("America/Los_Angeles")
moment("2015-03-24T09:47:31.042Z").format("LLL Z")
"March 24, 2015 2:47 AM -07:00"

到目前为止,太棒了。但现在我想在应用程序中的一个特定位置显示本地时间,但momentjs当然会使用提供的默认时区:

moment().format("LLL Z")
"March 24, 2015 2:52 AM -07:00"

如何构造再次使用本地时区的时刻实例?

我尝试使用moment.tz(timestamp,null),但它只是使用GMT。

感谢@Tanner在评论中的建议以及Getting the client';的时区,我能够弄清楚。

您可以使用utcOffset设置力矩的UTC偏移。结合Date.getTimezoneOffset,您可以再次在本地时间渲染时刻:

moment("2015-03-24T09:47:31.042Z")
  .utcOffset(-new Date().getTimezoneOffset())
  .format("LLL Z")
"March 24, 2015 10:47 AM +01:00"