javascript – 使用JSON.stringify()和JSON.parse()时使用Date()的问题

我试图使用JavaScript计算两次之间的差异。这只是基本的数学,但我似乎有一些问题,而使用JSON.stringify()和JSON.parse()。

如果您想知道为什么我将JSON.stringify()函数应用于日期,那是因为我使用本地存储来存储客户端上的一些数据,并在客户端再次登陆我的网站时使用它(这样更快)而不是向服务器发出更多请求)。该数据通常会在一段时间内更新一次(我通过API从另一个网站获取数据),因此我设置了一个data_update变量,并将其与其他数据一起存储。

这样我就从本地存储中获取存储的数据,并检查data_update(这是一个日期/时间)之间的差异以及检查时间/日期,看是否大于一周/天/ etc 。

这就是为什么我使用JSON函数的原因。我的问题是,当我从本地存储解析数据时,日期似乎与Date()对象不同。

我正在努力做下一个操作:

var x = JSON.parse(JSON.stringify(new Date()));

var y = JSON.parse(this.get_local_storage_data(this.data_cache_key)); // the data object stored on local storage

var q = y.data_update; // this is the variable where the Date() was stored

console.log(Math.floor((x-q)/1000));

以上将返回null。另外当我想看到Math.floor(x)结果时,它再次返回null。

那么在这种情况下我该怎么办?有没有解决这个问题?

如果您查看JSON.stringify的日期输出,您会看到:

JSON.stringify(new Date())

结果一个字符串。 JSON不具有Date对象的原始表示形式,JSON.parse将自动返回到Date对象。

Date对象的构造函数可以使用日期字符串,因此您可以通过执行以下操作将这些字符串值重新转换为日期:

var x = new Date(JSON.parse(JSON.stringify(new Date())));

那么算术将会起作用。

x = new Date(JSON.parse(JSON.stringify(new Date())))
y = new Date(JSON.parse(JSON.stringify(new Date())))
y - x
=> 982
http://stackoverflow.com/questions/11491938/issues-with-date-when-using-json-stringify-and-json-parse

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 使用JSON.stringify()和JSON.parse()时使用Date()的问题