JavaScript日期比較

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!");
}