javascript - 在 javascript (moment.js) 中将 UTC 日期转换为本地时间

标签 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();

给我过去两个小时的时间值,而实际上它们应该是当前时间。我如何解析/传递日期,以便那一刻知道它应该添加时区。在我的例子中是 GMT+2 或 SAST。

添加时区 (GMT) 似乎没有帮助。

Date.parse('2017-04-15T09:09:48.9590011 UTC')

结果为 NaN

最佳答案

你至少有两个选择:

  1. 在字符串末尾添加一个Z:

    moment(creationDate + "Z")
    
  2. 使用 .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/

相关文章:

javascript - 单击按钮时如何在 angularjs 中获取 json 文件?

JavaScript 悬停文本

asp.net-mvc - mvc dot.net 模型的多语言数据库模式

c# - 具有继承的 Web API 版本控制

asp.net-web-api2 - 如何在 Microsoft 图形 API 中过滤组成员?

javascript - Node.js Express/less-middleware & Bootstrap 3

javascript - ExtJS 6.具有抑制事件的网格复选框模型

c# - MVC Excel 互操作

c# - 具有复杂数组参数的 Web API

c# - .NET Web api 2 在 IIS 中的某个时间后停止工作