0

我尝试像这样比较两个时间戳:

var nowDate = new Date();
var givenDate = new Date(parseInt(year), parseInt(month), parseInt(day), parseInt(hour), parseInt(minute), 0);
var nd_timestamp = nowDate.getTime();
var gd_timestamp = givenDate.getTime();

if (nd_timestamp > gd_timestamp) {
    alert("yes");   
}

但它不能正常工作。如果我查看 nd_timestamp 和 gd_timestamp 一切看起来都很好,但是 if 子句不起作用。如果我删除 parseInt(year)... 并输入 Date(2012, 04, 20, 0, 0, 0),则 if 子句正在工作。

变量年,月等来自一个函数,但如果我用警报(年)等调试它,一切都很好。通过表格给出的日期小于实际日期。

有人知道为什么它不能使用变量吗?

谢谢!

4

2 回答 2

2

您应该检查传递给Date构造函数的值的有效性,其中包括明确指定10所有调用的第二个参数parseInt以避免令人讨厌的意外。

关于第二个参数,文档说

虽然此参数是可选的,但始终指定它以消除读者混淆并保证可预测的行为。当未指定基数时,不同的实现会产生不同的结果。

于 2012-06-30T14:20:31.573 回答
2

您必须从 Month 中取 1,因为由于某种原因它是从零开始的,这与其他的不同。

于 2012-06-30T14:33:44.833 回答