日期:2014-05-16  浏览次数:20335 次

js 比较时间的大小,遇到bug,虚心求解
比较两个时间的大小
var a = "2012-02-01 16:05:45";
var b = "2012-01-31 14:13:11";
为什么结果会是a<b呢?

function compareTime(startDate,endDate) {  

   var startDateTemp = startDate.split(" ");  
   var endDateTemp = endDate.split(" ");  
   
   var arrStartDate = startDateTemp[0].split("-");  
   var arrEndDate = endDateTemp[0].split("-");  
   
   var arrStartTime = startDateTemp[1].split(":");  
   var arrEndTime = endDateTemp[1].split(":");  
 
   var allStartDate = new Date(arrStartDate[0], arrStartDate[1], arrStartDate[2], arrStartTime[0], arrStartTime[1], arrStartTime[2]);  
   var allEndDate = new Date(arrEndDate[0], arrEndDate[1], arrEndDate[2], arrEndTime[0], arrEndTime[1], arrEndTime[2]);  

if (allStartDate.getTime() <= allEndDate.getTime()) {  
       //alert("startTime不能大于endTime,不能通过");  
       return true;  
   }
}
------解决方案--------------------
if (allStartDate.getTime() <= allEndDate.getTime()) {
  
给成用valueOf 比较,比较毫秒数
if (allStartDate.valueOf() <= allEndDate.valueOf()) {
 
------解决方案--------------------
new Date("2012","01","31","14","13","11")怎么出来Fri Mar 02 2012 14:13:11 GMT+0800,刚刚回答没经过测试。。
------解决方案--------------------
var a = "2012-01-01 16:05:45";
var b = "2012-00-31 14:13:11";
改成这样试试
月份是从0开始的
2012-02-01其实是三月一号
2012-01-31其实是2月31号  2月没31号  所以移到三月2号(根据闰年而异)
------解决方案--------------------
直接这样.
 function compareTime(startDate,endDate) {  
     var startdate = new Date(startDate);
     var enddate = new Date(endDate);
     if(startdate.valueOf() < enddate.valueOf())
     {
        return true;
     }
     return false;
}