使用moment.js将Utc日期更改为本地日期

Ant*_*ash 5 javascript timezone datetime date momentjs

我正在使用带有时区的moment.js在webapp中进行日期操作.我将所有日期存储在UTC中并将其作为UTC返回到UI.我有用户的时区.我想将UTC时间转换为本地用户时区.

var timezone = "America/New_York";
var utcDate = "2013-10-16T10:31:59.0537721Z";

var localDate = moment(utcDate).utc().tz(timezone).format()
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我的时间错了.不确定如何让这个工作与时刻

Mat*_*int 5

你可以试试:

moment.utc(utcDate).tz(timezone).format()
Run Code Online (Sandbox Code Playgroud)

但应该没关系。他们都应该产生: "2013-10-16T06:31:59-04:00"

它对我有用,在 Chrome 30 上运行,所以它可能与浏览器有关。

如果您在 IE8 上运行 Moment.js 2.3.1 或更早版本,那么这是问题#1175 的副作用,该问题已在 2.4.0 中修复。更新到最新版本应该可以解决问题。


bgu*_*uiz 5

使用+运算符获取unix时间,然后:

moment(+moment.utc(utcDate))
Run Code Online (Sandbox Code Playgroud)

这个怎么运作:

  • moment.utc(String) 解析字符串并返回设置为UTC时区的时刻对象.
  • + 当前obejct返回unix偏移量(以毫秒为单位)
  • moment(Number) 使用传入的unix偏移量在用户的本地时区创建一个新的时刻对象.