Javascript 日期比较错误
我正在获取当前日期,将其月份减少6个月,并检查数据库中的日期是否高于创建日期。但是它不起作用。我做错了什么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
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
-这将根据需要调整年份,但请注意,如果您从3月31日(2016年2月28日至29日?2016年3月3日至2日)减去一个月,其行为可能与预期不符-这是日期操作的一般问题,需要编写更多代码来处理此类边缘情况,但这是由您决定如何处理的today.setMonth(today.getMonth()-5)
- 月份是以零为基础的,但您要将它们放入日期字符串中。再次以一月为例,这将导致月份部分的
-00-
- 你根本没有在填充数字。这可能是一个问题,也可能不是,但您可能希望将0添加到小于10的数字,以确保正确的字符串长度和更容易的比较
- 你的约会格式不好。日期的正确格式是
,例如今天是Y-m-d
。这种格式不仅减少了歧义,而且可以作为字符串进行排序,无需任何努力。考虑到处使用这个格式,并且只将它格式化为其他东西(例如<代码> D/M/Y -<代码> 26 /DEC/2015 < /代码>),当它呈现给用户时。2015-12-26
- 您正在将原始变量放入数据库查询中。这是不好的,原因有很多,如果可能的话,您应该使用参数,但至少您需要在字符串周围加引号(例如,
)。否则,查询的字面意思将是类似于“END\u DATE>=”“+today+”
,这相当于“END\u DATE>=26-12-2015”
,同样荒谬“END\u DATE>=-2001”
我想这就是我所发现的。。。结论:扔掉这段代码,重新开始,记住上面所有的事情。注意,你可能会以无效日期结束:如2月31日等。@WillemVanOnsem我知道该功能还有很多工作要做,同样关于年份。。。你知道有什么类似的工作功能吗?非常感谢你抽出时间。你澄清了很多事情。