我从 ASP.NET webapi2 服务收到以下日期作为 JSON 数据。
{
creationDate: "2014-11-18T15:16:56.363"
... //other fields...
}
系统中的日期存储为 UTC 日期,与时区无关。 当数据返回并显示在屏幕上时,使用的时间不正确,因为 moment 假定正在解析的日期是本地时间,而不是 UTC。
moment(text).tz('Africa/Johannesburg').fromNow();
给我过去两个小时的时间值,而实际上它们应该是当前时间。我如何解析/传递日期,以便那一刻知道它应该添加时区。在我的例子中是 GMT+2 或 SAST。
添加时区 (GMT) 似乎没有帮助。
Date.parse('2017-04-15T09:09:48.9590011 UTC')
结果为 NaN
最佳答案
你至少有两个选择:
在字符串末尾添加一个
Z
:moment(creationDate + "Z")
使用
.utc
然后使用.local
:moment.utc(creationDate).local()
这是一个示例,使用几乎总是采用夏令时(“夏令时”)的日期,因此它甚至适用于我们这些在英国的人(否则他们使用 GMT,因此很难判断是否我们正在获取 UTC 或本地结果 :-)):
var creationDate = "2014-05-18T15:16:56.363";
console.log("String:", creationDate);
console.log("1:", moment(creationDate + "Z").toString());
console.log("2:", moment.utc(creationDate).local().toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
关于javascript - 在 javascript (moment.js) 中将 UTC 日期转换为本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43424436/