在javascript中将UTC日期转换为本地时间(矩.js)
我从ASP.NET webapi2服务接收以下日期作为JSON数据在javascript中将UTC日期转换为本地时间(矩.js),javascript,asp.net-mvc,asp.net-web-api2,momentjs,Javascript,Asp.net Mvc,Asp.net Web Api2,Momentjs,我从ASP.NET webapi2服务接收以下日期作为JSON数据 { creationDate: "2014-11-18T15:16:56.363" ... //other fields... } 系统中的日期存储为UTC日期,与时区无关。 当数据返回并显示在屏幕上时,使用了不正确的时间,因为moment假设正在解析的日期是本地时间,而不是UTC moment(text).tz('Africa/Johannesburg').fromNow(); 给我过去两个小时的时间值,而
{
creationDate: "2014-11-18T15:16:56.363"
... //other fields...
}
系统中的日期存储为UTC日期,与时区无关。
当数据返回并显示在屏幕上时,使用了不正确的时间,因为moment假设正在解析的日期是本地时间,而不是UTC
moment(text).tz('Africa/Johannesburg').fromNow();
给我过去两个小时的时间值,而它们实际上应该是当前的。如何解析/传递日期,以便moment知道应该添加时区。在我的例子中,GMT+2或SAST
添加时区(GMT)似乎没有帮助
Date.parse('2017-04-15T09:09:48.9590011 UTC')
结果在
NaN
中,您至少有两个选项:
Z
:
moment(creationDate + "Z")
.utc
,然后使用.local
:
moment.utc(creationDate).local()
问题在于,当您发送/接收客户端和服务器都将尝试转换为其时区的日期时,技巧在于,将日期作为字符串传递。
返回或发送数据时,请删除“T”
{
creationDate: "2014-11-18 15:16:56.363"
... //other fields...
}
或
因此,当客户端收到数据时,它不会更改或转换日期。然后你可以用
new Date(moment(data.creationDate.replace('T', ' ')))
这将返回从服务器发送的内容:“如果要以UTC格式解析或显示某个时刻,可以使用矩.UTC()而不是矩()
new Date(moment(data.creationDate.replace('T', ' ')))