1

我一直在尝试使用 jQuery UI 的 datepicker 和 timepicker 插件(我刚刚发现并且非常满意的插件)来比较日期和时间。

所以,这就是我所拥有的:

$("#dateOfAb").val()首先,来自和的预期值$("#dateOfAb2").val()都使用具有以下格式的日期时间选择器:

时间:

$("#dateOfAb, #dateOfAb2").datetimepicker({ timeFormat: "hh:mm tt", stepMinute: 15 });

并且,虽然没有明确设置(这似乎是所述插件的默认日期格式):

日期格式:“月/日/年”

(示例输出:2013 年 8 月 16 日上午 12:00)

所以,我需要比较这些日期,虽然我在过去比较日期方面取得了成功,但我在比较相同日期的时间时遇到了麻烦(这是最终目标),但现在阻碍我的是我无法获得这两个parseDate值(在完整日期/时间的子字符串上)以表明当日期相同时它们相等。

好的,最后一段可能有点令人困惑,所以这里是代码:

$("#dateOfAb2").change(function () {
    console.log("FIRST SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9)))
    console.log("FIRST SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9)))

    if ($.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9)) == $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9))) {
        alert("The dates are tied.");
        console.log("SECOND SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9)))
        console.log("SECOND SET: " + $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9)))
    }
});

问题是,即使我知道这些值完全相同(用console.log()[下图] 证明),它们似乎并没有像我在我的if分支中所期望的那样进行比较。

运行后的控制台图像:

在此处输入图像描述

您可以看到我只对值的日期部分进行了子串化,并且值是相同的,但我不确定我做错了什么以及为什么console.log()命令的“SECOND SET:”不会执行。

4

1 回答 1

3

解析例程返回 Date 对象,因此您的比较是在两个单独的对象实例之间进行的。他们永远不会彼此==

尝试:

if ($.datepicker.parseDate("mm/dd/yy", $("#dateOfAb").val().substring(0, 9)).getTime() == $.datepicker.parseDate("mm/dd/yy", $("#dateOfAb2").val().substring(0, 9)).getTime()) {

通过比较 call 的结果.getTime(),您可以比较两个数字的相等性,这将满足您的要求。

于 2013-08-16T18:39:34.320 回答