javascript - date类型 - 使用JSON.stringify()和JSON.parse()时,Date()




json date类型 (2)

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

如果你想知道为什么我将JSON.stringify()函数应用到日期,这是因为我使用本地存储在客户端存储一些数据,并在客户端再次登录到我的网站时使用它(这是更快的方法而不是向服务器提出更多请求)。 该数据通常更新一次(我通过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没有JSON.parse自动转换回Date对象的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()







date