使用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()
上一篇: Issues with Date() when using JSON.stringify() and JSON.parse()