JavaScript日期比較
方法一:
var _flag = true;
//取值
var sdate1 = $("#XDateTimePicker1").val();
var shour1 = $("select[name='XDateTimePicker1$hour']").val();
var smin1 = $("select[name='XDateTimePicker1$minutes']").val();
var edate1 = $("input[name='XDateTimePicker3']").val();
var ehour1 = $("select[name='XDateTimePicker3$hour']").val();
var emin1 = $("select[name='XDateTimePicker3$minutes']").val();
//轉成new Date格式
var newsdatestr1 = new Date(sdate1.substring(0, 4) + "/" + sdate1.substring(5, 7) + "/" + sdate1.substring(8, 10) + " " + shour1 + ":" + smin1 + ":00");
var newedatestr1 = new Date(edate1.substring(0, 4) + "/" + edate1.substring(5, 7) + "/" + edate1.substring(8, 10) + " " + ehour1 + ":" + emin1 + ":00");
var sdate2 = Date.parse(newsdatestr1.toDateString());
var edate2 = Date.parse(newedatestr1.toDateString());
//比較日期
if (sdate2 == edate2) {
//比較時間
if (newsdatestr1.getTime() > newedatestr1.getTime()) {
alert("出廠時間 不能晚於 預計回廠時間!");
_flag = false;
}
} else {
alert("要以當日時間來回!");
_flag = false;
}
//_flag = false;
return _flag;
方法二 :
假設日期格式為:2010/03/16
不建議的日期比較方式:
1.先做切割
var Year = parseInt( st.substring( 0 ,4 ) ) ;
var Month = parseInt( st.substring( 5, 7 ) ) ;
var Day = parseInt( st.substring( 8, 10 ) ) ;
2.再轉成Date型別
var date = new Date( Year, Month, Day ) ;
理由:在轉換的過程中,若切出來的字串為"0x",有時轉換成int時會只剩下0,且轉換成Date型別時值也不完全正確。
建議的日期比較方式:
var date = ( Date.parse( st ) ).valueOf() ; // 直接轉換成Date型別所代表的值後再比較其大小,快又好用!
例1:
if ((Date.parse("9/17/2009")).valueOf() > (new Date()).valueOf())
{
alert('今天比 2009/9/17還小');
}
else
{
alert('今天比 2007/9/17還大');
}
例2:
系統目前時間變數名稱: CurrentDate (格式 xxxx-xx-xx oo:oo:oo)
today = new Date();
today_year = today.getFullYear(); //西元年份
today_month = today.getMonth()+1; //一年中的第幾月
today_date = today.getDate(); //一月份中的第幾天
today_hours = today.getHours(); //一天中的小時數
today_minutes = today.getMinutes(); //一天中的分鐘
today_seconds = today.getSeconds(); //一天中的秒數
var CurrentDate = today_year+"-"+today_month+"-"+today_date+" "+today_hours+":"+today_minutes+":"+today_seconds;
要比較的時間變數: ScheduleDate (格式一樣為 xxxx-xx-xx oo:oo:oo)
var ScheduleDate = "2013-8-30 04:00:00";
判斷ScheduleDate是否比系統目前時間CurrentDate還小
if ( (Date.parse(ScheduleDate)).valueOf() < (Date.parse(CurrentDate)).valueOf())
{
alert("ScheduleDate比系統目前時間小");
}
else
{
alert("ScheduleDate比系統目前時間大");
}
-----------------------------------------------------------------------------------------------------
new Date()出來得到的是目前的日期時間,
我們可透過toDateString()來取出日期部份,再透過Date.parse來比較是否相同,如下,
var txtDateString = "2012/05/18"; var currDate = Date.parse((new Date()).toDateString()); var txtDate = Date.parse(txtDateString); if (currDate == txtDate) { alert("The same!"); } else { alert("Not the same!"); }