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;
}