大家好,javascript专家,
我遇到了这段javascript代码,它让我有点费力地理解为什么它不能像预期的那样工作。所以我想我把它贴在这里寻求你的帮助。
基本上,代码是将日期转换为毫秒格式,然后将毫秒值再次转换回日期对象,但当进行比较时,它们是否相等?
var currentTime = new Date();
var currentTimeInMill = Date.parse(currentTime);
var currentTime2 = new Date(currentTimeInMill);
// debug in firefox
console.log(currentTime);
// Date {Thu Jul 07 2011 09:56:19 GMT+1000 (AUS Eastern Standard Time)}
console.log(currentTime2);
// Date {Thu Jul 07 2011 09:56:19 GMT+1000 (AUS Eastern Standard Time)}
console.log(currentTime == currentTime2);
// false我的问题是,为什么在火狐console.log中,即使currentTime和currentTime2的值“看起来”相同,它们的两个值也不相等?
发布于 2011-07-07 08:19:18
这是因为时间串不是往返的。如果你尝试这样做:
var currentTime = new Date();
var currentTimeInMill = Date.parse(currentTime);
var currentTime2 = new Date(currentTimeInMill);
console.log(currentTime.getTime());
console.log(currentTime2.getTime());
console.log(currentTime == currentTime2);
// false你会发现时代不同了。currentTime2以3个零结尾,而currentTime有其他东西。这是一个以毫秒为单位的分钟差,日期字符串显然不包括这一点。
https://stackoverflow.com/questions/6604495
复制相似问题