我正在尝试使用JavaScript计算两次之间的差异。这只是基本的数学运算,但是在使用JSON.stringify()and 时,我似乎对此有一些疑问JSON.parse()。
JSON.stringify()
JSON.parse()
如果您想知道为什么要将JSON.stringify()功能应用于日期,那是因为我使用本地存储在客户端存储一些数据,并在客户端再次访问我的网站时使用它(这种方式比发出更多请求要快)到服务器)。该数据通常会不时更新一次(我是通过另一个网站的API获取数据),因此我设置了一个data_update变量,并将其与其他数据一起存储。
data_update
这样,我从本地存储中获取存储的数据,并检查检查时data_update(日期/时间)和时间/日期之间是否存在差异,并查看其是否大于一周/天/ etc。
这就是为什么我使用JSON函数的原因。我的问题是,当我从本地存储中解析数据时,日期似乎与Date()对象不同。
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再次返回。
null
Math.floor(x)
那么在这种情况下我该怎么办?有解决办法吗?
如果查看JSON.stringify的Date的输出,则会看到:
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