如何在angularjs中使用JSON.stringify(data)获取日期

时间:2014-09-12 11:03:02

标签: javascript json angularjs date datetime

在我的angular js应用程序中,我从Web服务获得成功响应,我正在尝试在控制台中显示响应数据

console.log(JSON.stringify(data)) 

但问题在于我的成功响应数据有一个日期元素.i已经打印了JSON.stringify(data)输出之前和之后: 之前:2012年8月14日星期二00:00:00 GMT + 0530(印度标准时间) 在JSON.stringify(数据)之后:" 2012-08-13T18:30:00.000Z"

之后显示8月13日而不是8月14日。

请告诉我如何解决这个问题,我想在JSON.stringify(data)之后获得14点。

1 个答案:

答案 0 :(得分:3)

JSON.stringify使用toJSON方法(如果已定义)来序列化对象。 Date个对象确实在prototype中定义了该方法,并且它与Date.prototype.toISOString几乎相同。

所以一个解决方案是重新定义Date.prototype.toJSON:我并不是真的推荐它,因为ISO格式是将日期作为字符串传输的常规方法,但它可以完成。

此示例使用moment.js

Date.prototype.toJSON = function() {
    return moment(this).format("YYYY-MM-DD HH:mm:ss");
};

最后,问问自己:为什么要使用JSON.stringify在控制台上显示日期? Date有很多方法可以显示日期(toStringtoUTCStringtoLocaleStringtoISOString,...并非所有浏览器都支持这些方法,是公平的),如果他们不满足您的需求,那么有很多日期库(如上面提到的moment.js)可以帮助您。