【问题标题】:How do you format a moment in local time after changing the default timezone?更改默认时区后如何格式化当地时间?
【发布时间】:2015-03-24 09:53:14
【问题描述】:

我有一个时间戳,我用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"

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

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

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

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

【问题讨论】:

标签: javascript momentjs


【解决方案1】:

感谢@Tanner 在 cmets 中的建议和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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2011-01-06
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多