比较JS中的日期不起作用

时间:2013-01-14 14:25:55

标签: javascript date compare

我在JS中有这个功能,它非常奇怪,因为它适用于很多日期,但有一个不是..

我有两个输入并且jquery复制第二个中的第一个如果第二个是次要的或者是null,然后如果我在第一个中添加另一个更大的日期,则第二个日期在第一个日期变为相同。

但我有一个案例,第一个输入是01/05/2013,第二个输入是2013年5月31日,如果我将第一个更改为2013年6月1日,则第二个应该在同一天更改,但是不要这样做..

如果用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]);

感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

<强>月

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

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