更改默认时区后,如何在当地时间格式化片刻?

时间:2015-03-24 09:53:14

标签: javascript momentjs

我有一个时间戳,我使用momentjs进行格式化:

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

由于我们的应用程序的性质,我们setting a default timezone for 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"

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

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

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

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

1 个答案:

答案 0 :(得分:1)

感谢@Tanner在Getting the client's timezone in JavaScript的评论和答案中提出的建议,我能够弄清楚。

您可以使用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"