繁体   English   中英

日期对象在Chrome中有效,但在Safari,Firefox或IE中无效

[英]Date object is valid in Chrome but not Safari, Firefox, or IE

我从API获取日期对象。 这是API返回的格式:

“2016-04-05 13:39:46.612”

Chrome似乎解释了这一点并正确显示,但在Firefox,Safari和IE中,我得到的是null或无效的日期。

Chrome结果:

console.log(purchaseDate) 
>> Tue Apr 05 2016 13:39:46 GMT-0500 (CDT)

Angular视图中的这个HTML:{{$ scope.purchaseDate | 日期:'MMM d,yh:mm a'}}输出:2016年4月5日下午1:39

Firefox结果(类似于Safari和IE):

console.log(purchaseDate) 
>> Invalid Date

Angular视图中的这个HTML:{{$ scope.purchaseDate | date:'MMM d,yh:mm a'}}输出:null

我已经尝试使用moment.js格式化日期,然后再将其发送到浏览器(如类似问题的答案所示),但结果并不是更好:

Chrome结果:

console.log(moment(purchaseDate).format()) 
>> 2016-04-05T13:39:46-05:00

Firefox结果(类似于Safari和IE):

console.log(moment(purchaseDate).format()) 
>> Invalid Date

有任何想法吗? 我想使用moment.js来解析一致,因为我已经在我的代码中的其他地方使用它了。

我想我有类似的问题,对我来说最好的解决方案是使用momentjs库来解析日期字符串:

bower install --save moment

然后例如:

 $scope.purchaseDate  = moment("2016-04-05 13:39:46.612", "YYYY-MM-DD HH:mm:ss.SSS").toDate();

请参阅解析格式: http//momentjs.com/docs/#/parsing/string-format/

在HTML页面中例如:

{{purchaseDate | date:'medium'}}

请注意,momentjs会处理您当地的时区,并且日期会相应变化

我希望它有所帮助。

如果你要使用有角度的力矩,你也应该使用角度力矩

加载值时,请创建一个moment对象而不是Date对象。

var purchaseDate = moment("2016-04-05 13:39:46.612");

moment.js已经识别出这种特殊格式,因此在解析时不需要提供格式字符串。 虽然请注意它将被解释为当地时间 如果你想用UTC代替它,那么:

var purchaseDate = moment.utc("2016-04-05 13:39:46.612");

无论哪种方式,您都可以使用角度矩来格式化它:

{{$scope.purchaseDate | amDateFormat:'MMM D, Y h:mm a'}} 

Angular-moment还提供了许多其他过滤器,如果您愿意,可以使用它们。 看看他们的文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM