如何比较dd / mm / yyyy格式的两个不同日期

时间:2011-05-19 07:31:07

标签: javascript

任何人都可以帮我找到解决方案

我只想比较dd / mm / yyyy格式的两个日期。

function compareDate(dt1 , dt2 , formatString){var returnVal = 2;
    var dt1Parts;
    var dt2Parts;
    var dt1dd;
    var dt1mm;
    var dt1yyyy;
    var dt2dd;
    var dt2mm;
    var dt2yyyy;
    if(formatString == 'dd/mm/yyyy'){
        dt1Parts = dt1.split('/');
        dt2Parts = dt2.split('/');
        dt1dd = parseInt(dt1Parts[0]);
        dt1mm = parseInt(dt1Parts[1]);
        dt1yyyy = parseInt(dt1Parts[2]);
        dt2dd = parseInt(dt2Parts[0]);
        dt2mm = parseInt(dt2Parts[1]);
        dt2yyyy = parseInt(dt2Parts[2]);
    }
    else if(formatString == 'dd-mm-yyyy'){
        dt1Parts = dt1.split('-');
        dt2Parts = dt2.split('-');
        dt1dd = parseInt(dt1Parts[0]);
        dt1mm = parseInt(dt1Parts[1]);
        dt1yyyy = parseInt(dt1Parts[2]);
        dt2dd = parseInt(dt2Parts[0]);
        dt2mm = parseInt(dt2Parts[1]);
        dt2yyyy = parseInt(dt2Parts[2]);
    }else{
        alert(formatString+' format is not supported.');
    }
    if(dt1yyyy == dt2yyyy && dt1mm == dt2mm && dt1dd == dt2dd){
        returnVal = 0;
    }
    else if(dt1yyyy > dt2yyyy){
        returnVal = 1 ;
    }else if(dt1yyyy == dt2yyyy ){
        if(dt1mm > dt2mm){
            returnVal = 1;
        }else if(dt1mm == dt2mm){
            if(dt1dd > dt2dd){
                returnVal = 1;
            }else{
                returnVal = -1;
            }
        }else{
            returnVal = -1;
        }
    }else{
        returnVal = -1;
    }
    return returnVal;
}

提前致谢, 希尔帕

6 个答案:

答案 0 :(得分:4)

将字符串反转为yyyy / mm / dd,或将它们转换为数字或Date对象。

仅用于比较的最简单方法是ASCII顺序。使用类似的东西进行反转:


function invert(date) {
 return date.split(/[/-]/).reverse().join("")
}
function compareDates(date1, date2) {
 return invert(date1).localeCompare(invert(date2));
}

答案 1 :(得分:2)

以下是将字符串格式转换为日期的方法:

var myString = "17/07/1979",
    correctFormat = myString.replace(/(\d+)\/(\d+)\/(\d+)/, "$3/$2/$1"),
    myDate = new Date(correctFormat);

答案 2 :(得分:1)

不知道您正在使用哪种语言或类库:

方法1:求你的字符串为yyyymmdd并将do字符串进行比较。 方法2:将yyyy mm和dd填入整数的高位,中位和低位并进行比较。

答案 3 :(得分:0)

试试这个

    var date1=new Date('your date1 string');
    var date2=new Date('your date2 string');

    var difference=new Date(date1.getTime()-date2.getTime());

答案 4 :(得分:0)

最简单的方法可能是从输入字符串创建2个javascript Date对象。您可以通过将输入切换为日,月和年来实现这一目标。你可以使用'substring'函数。

然后你可以这样做:

var firstDate = new Date(year1, month1, day1);
var secondDate = new Date(year2, month2, day2);

一旦有2个日期对象,就可以使用普通的比较运算符:

if (firstDate > secondDate)
    // do something
else
    ...

答案 5 :(得分:0)

  if ($.datepicker.parseDate('dd/mm/yy', fDate) > $.datepicker.parseDate('dd/mm/yy', tDate)) {

       //do something                    
}

你可以比较两个日期。这里我比较日期大于日期
试试这个