使用JSON.stringify()和JSON.parse()时,Date()

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

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

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

所以这就是我使用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

JSON.stringify(new Date())

回报

“2013-10-06T15:32:18.605Z”

感谢上帝是: Date.toISOString()

链接地址: http://www.djcxy.com/p/1061.html

上一篇: Issues with Date() when using JSON.stringify() and JSON.parse()

下一篇: Why should C++ programmers minimize use of 'new'?