Javascript 日期比较错误

Javascript 日期比较错误,javascript,Javascript,我正在获取当前日期,将其月份减少6个月,并检查数据库中的日期是否高于创建日期。但是它不起作用。我做错了什么 var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()-5; var yy = today.getFullYear(); yy = yy.toString().sub

我正在获取当前日期,将其月份减少6个月,并检查数据库中的日期是否高于创建日期。但是它不起作用。我做错了什么

var today = new Date();
                var dd = today.getDate();
                var mm = today.getMonth()-5; 
                var yy = today.getFullYear();
                yy = yy.toString().substr(2,2);
                today = dd+'-'+mm+'-'+yy;

"END_DATE >="+today +"
这是存储在我的数据库中的一个日期的格式: 2016年12月28日

今天的变量给了我一些东西

  • 你的逻辑是错误的。在一月,
    today.getMonth()-5
    将产生
    -5
    ,显然不是有效的月份。要正确减去月数,请尝试
    today.setMonth(today.getMonth()-5)
    -这将根据需要调整年份,但请注意,如果您从3月31日(2016年2月28日至29日?2016年3月3日至2日)减去一个月,其行为可能与预期不符-这是日期操作的一般问题,需要编写更多代码来处理此类边缘情况,但这是由您决定如何处理的

  • 月份是以零为基础的,但您要将它们放入日期字符串中。再次以一月为例,这将导致月份部分的
    -00-

  • 你根本没有在填充数字。这可能是一个问题,也可能不是,但您可能希望将0添加到小于10的数字,以确保正确的字符串长度和更容易的比较

  • 你的约会格式不好。日期的正确格式是
    Y-m-d
    ,例如今天是
    2015-12-26
    。这种格式不仅减少了歧义,而且可以作为字符串进行排序,无需任何努力。考虑到处使用这个格式,并且只将它格式化为其他东西(例如<代码> D/M/Y -<代码> 26 /DEC/2015 < /代码>),当它呈现给用户时。

  • 您正在将原始变量放入数据库查询中。这是不好的,原因有很多,如果可能的话,您应该使用参数,但至少您需要在字符串周围加引号(例如,
    “END\u DATE>=”“+today+”
    )。否则,查询的字面意思将是类似于
    “END\u DATE>=26-12-2015”
    ,这相当于
    “END\u DATE>=-2001”
    ,同样荒谬


我想这就是我所发现的。。。结论:扔掉这段代码,重新开始,记住上面所有的事情。

注意,你可能会以无效日期结束:如2月31日等。@WillemVanOnsem我知道该功能还有很多工作要做,同样关于年份。。。你知道有什么类似的工作功能吗?非常感谢你抽出时间。你澄清了很多事情。