在Javascript中比较具有指定格式的日期

时间:2013-06-10 14:33:03

标签: javascript html

我有格式为14-May-201315-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");
    }   
}

我做错了什么,如何让它正常工作?

谢谢!

3 个答案:

答案 0 :(得分:2)

  

格式14-May-201315-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()。

http://www.tutorialspoint.com/javascript/date_gettime.htm

答案 2 :(得分:1)

更改为

if(firstDate.getTime() < secondDate.getTime()){
  //do something
} else {
  //do something else
}
  

getTime方法返回的值是毫秒数   自1970年1月1日00:00:00 UTC

所以你基本上比较了日期的两个毫秒表示。