比较日期未在javascript中返回正确的结果

时间:2012-11-08 05:51:25

标签: javascript

我正在比较javascript中的两个日期

function checkCurrentDate(expiryDate){
//var currentDateStr=expiryDate;
var currentDate = new Date();
var month = currentDate.getMonth() + 1;
var day = currentDate.getDate();
var year = currentDate.getFullYear();
currentDate = month + "/" + day + "/" + year;
var dArr = currentDate.split("/");
currentDate = dArr[0]+ "/" +dArr[1]+ "/" +dArr[2].substring(2);  
var currentExpiryDateStr = expiryDate;

if(currentExpiryDateStr == currentDate){    

} 

if(currentExpiryDateStr < currentDate){

    alert("Expiry date is earlier than the current date.");
    return false;
}
}

目前日期在“currentExpiryDateStr”中是“11/10/12”,“currentDate”是“11/8/12”现在在这种情况下“if(currentExpiryDateStr&lt; currentDate)”返回true并进入在if条件但是这个条件应该返回false并且不应该输入if if条件。它以前工作但不知道为什么它现在不起作用。

4 个答案:

答案 0 :(得分:0)

Date对象将执行您想要的操作 - 为每个日期构建一个,然后使用常用运算符进行比较。 试试这个..

function checkCurrentDate(expiryDate){

   var currentDate = new Date();  // now date object

  var currentExpiryDateStr = new Date(expiryDate);  //expiry date object

   if(currentExpiryDateStr == currentDate){    

   } 

   if(currentExpiryDateStr < currentDate){

         alert("Expiry date is earlier than the current date.");
         return false;
    }
   }

这里是小提琴:: http://jsfiddle.net/YFvAC/3/

答案 1 :(得分:0)

var currentDate = Date.now();
if (expiryDate.getTime() < currentDate ) {
    alert("Expiry date is earlier than the current date.");
    return false;
}

now()方法返回自1970年1月1日00:00:00 UTC以来直到现在为止的毫秒数。

getTime()返回自1970年1月1日午夜以来的毫秒数

答案 2 :(得分:0)

您正在比较字符串,您应该比较日期对象。

如果月份/日/年的格式为“11/10/12”,并且该年份是2000年后的两位数年份,则可以使用以下日期将其转换为日期:

function mdyToDate(dateString) {
  var b = dateString.split(/\D/);
  return new Date('20' + b[2], --b[0], b[1]);
}

要测试到期时间,您可以执行以下操作:

function hasExpired(dateString) {
  var expiryDate = mdyToDate(dateString);
  var now = new Date();
  return now > expiryDate;
}

所以2012年11月8日:

hasExpired('11/10/12'); // 10-Nov-2012 -- false
hasExpired('6/3/12');   // 03-Jun-2012 -- true

hasExpired功能可替换为:

if (new Date() > mdyToDate(dateString)) {
  // dateString has expired
}

答案 3 :(得分:-1)

只需在if条件

之前添加这两行
currentExpiryDateStr=Date.parse(currentExpiryDateStr);
currentDate=Date.parse(currentDate);