javascript - new date() 从服务器 GMT 发送到本地计算机的 AngularJS 时间

标签 javascript angularjs date lodash

我收到来自服务的响应,当服务返回时,它会返回创建的服务器 GMT 日期。当我想显示本地日期例如:5-22-2016 我想更改本地计算机的时间时,就会出现问题。

我的回复看起来像这样:

createdDate: "2016-04-22 16:48 PM GMT"
description: "File Upload Success"
fileGuid:"62e7250c-d5ed-41e2-b5b2-4600094d9a7c"
fileSize:"191429"

我的数组中有 90 个不同的对象。 我正在尝试使用 _each 来迭代我的所有键值对:

  _.each(data, function(value, key) {
    console.log(key, value);
    var strDateTime = value.createdDate;
    var myDate = new Date(strDateTime);
    data[key].createdDate = (myDate.toLocaleString()).split(',')[0];
    console.log("data", data)

但它适用于某些创建日期,而其他日期则返回无效的任何建议

最佳答案

根据ECMA-262 5.1 15.9.1.15 Date Time String Format,您的某些数据似乎格式不正确。

ECMAScript defines a string interchange format for date-times based upon a simplification of the ISO 8601 Extended Format. The format is as follows: YYYY-MM-DDTHH:mm:ss.sssZ.

所以更好的解决方案是使用 moment.js .

使用 moment.js,您可以将代码更新为,

moment('2016-5-5').toLocaleString() //'Tue May 05 2015 00:00:00 GMT+0800'

此外,仅出于显示目的,有一个 Angular Directive(指令)版本 angular-moment.

希望这会有所帮助。 :)

<小时/>

感谢 @RobG 的通知,我刚刚用 ECMA-262 替换了 MDN。

对于moment("2016-04-22 16:48 PM GMT"),您可以从下图中看到,

enter image description here

关于javascript - new date() 从服务器 GMT 发送到本地计算机的 AngularJS 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37041642/

相关文章:

php - 计算并显示日期为 'secs ago' 、 'mins ago' 、 'hours ago' 等

javascript - Node.js 错误 TypeError : object is not a function on callback

javascript - navigator.cookieEnabled 在本地主机的 IE9 中不起作用

javascript - 有没有办法在池化 A 型框架实体上启动 tick() 循环,或者我应该手动管理?

javascript - Angular ng-if 与 ng-repeat 抛出错误

javascript - 如何在具有隔离范围的指令中使用 ng-repeat?

sql - 转换 yyyy-mm-dd hh :mm:ss to yyyy-mm-dd in sql

java - RSS 2.0 提要中的 RFC-822 日期时间格式 : CET not accepted?

javascript - 复选框在编辑页面中不起作用

javascript - 使用 _.some | _.any 正确表示破折号或下划线