我有格式为14-May-2013
和15-Jun-2013
如何比较这两个日期?
这是我的代码,但它似乎没有正常工作。
if (col == 8 && m == 2) {
var firstValue = document.getElementById(tableID+m+""+6).innerHTML.split('-');
var secondValue = document.getElementById(tableID+m+""+7).innerHTML.split('-');
var firstDate=new Date();
firstDate.setFullYear(firstValue[0],firstValue[1], firstValue[2]);
var secondDate=new Date();
secondDate.setFullYear(secondValue[0],secondValue[1], secondValue[2]);
if (firstDate < secondDate)
{
alert("First Date is less than Second Date");
}
else
{
alert("Second Date is less than First Date");
}
}
我做错了什么,如何让它正常工作?
谢谢!
答案 0 :(得分:2)
格式
14-May-2013
和15-Jun-2013
firstDate.setFullYear(firstValue[0],firstValue[1], firstValue[2]);
我做错了什么?
setFullYear
不会使用月份名称或缩写词。您必须先解析日期格式才能获得月份编号。
function parse(str) {
var vals = str.split('-');
return new Date(
+vals[0],
["jan","feb","mar","apr","may","jun","jul","aug","sep",
"oct","nov","dez"].indexOf(vals[1].toLowerCase()),
+vals[2]
);
}
var firstDate = parse(document.getElementById(tableID+m+""+6).innerHTML)
var secondDate = parse(document.getElementById(tableID+m+""+7).innerHTML);
if (firstDate < secondDate) {
alert("First Date is less than Second Date");
} else {
alert("Second Date is less than or equal to First Date");
}
答案 1 :(得分:1)
当我比较两个时,我将时间转换为Unix时间。结果更可靠。在javascript中,这将是getTime()函数。
所以对你来说firstDate.getTime()&lt; secondDate.getTime()。
答案 2 :(得分:1)
更改为
if(firstDate.getTime() < secondDate.getTime()){
//do something
} else {
//do something else
}
getTime方法返回的值是毫秒数 自1970年1月1日00:00:00 UTC
所以你基本上比较了日期的两个毫秒表示。