JS中的比较日期不起作用

Compare dates in JS dont work

本文关键字:日期 不起作用 比较 JS      更新时间:2023-09-26

我在JS中有这个函数,这是一个非常奇怪的,因为工作与许多日期,但与一个没有。

我有两个输入,用jquery复制第一个到第二个,如果第二个是次要的或为空,然后如果我把另一个更大的日期在第一个,第二个日期改变为相同的第一个。

但是我有一个情况,第一个输入是01/05/2013,第二个输入是31/05/2013,如果我把第一个更改为01/06/2013,第二个应该在同一日期更改,但不要这样做…

如果用firebug测试它和这个函数

  obtenerFecha(fIni) > obtenerFecha(fFin) // obtenerFecha(01/06/2013) > obtenerFecha(31/05/2013)

返回false,结果为真!

这是我的代码,如果有人可以帮助我。

    function copiarFecha(inicio,fin) {
        var fIni = $("#" + inicio).val();
        var fFin = $("#" + fin).val();
        if ((fFin == "") || obtenerFecha(fIni) > obtenerFecha(fFin)) {
            $("#" + fin).attr('value', fIni);
        }
        return true;
    }

    function obtenerFecha(strFecha) {
        var df = strFecha.split("/");
        if (isNaN(df[0]) || isNaN(df[1]) || isNaN(df[2]) || (df[0] > 31) || (df[1] > 12)) {
            cargaMensaje("KO", "La fecha no es correcta,revísela.");
            return false;
        }
        return new Date(df[2], df[1], df[0]);

谢谢。

你需要从月份中减去1。http://jsbin.com/eqozic/2/

表示月份的整数值,1月从0开始,12月从11开始。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

Javascript Date中的月份范围为0-11而不是1-12,因此您的新日期(2013,5,31)转换为2013,06,01,即2013年5月1日。