2013-01-11 38 views
2

好吧我不能讓我的頭圍繞着這個,我查看了很多SF上的帖子,但無法弄清楚。比較日期和時間Javascript

我需要比較兩個日期&次,開始和結束。 如果結束很好,那麼alert();

作品在Chrome,但不是IE(9) (格式爲:01-JAN-2013 10:00)

var stDate = new Date(date +" "+ start); 
var enDate = new Date(dateEnd + " "+ end); 

     if (Date.parse (enDate) > Date.parse (stDate)) { 
      alert('on no'); 
     } 

請幫幫忙,IM卡...

+1

你應該看看[moment.js](http://momentjs.com)。它處理所有跨瀏覽器日期大驚小怪! –

+0

我想知道時區是否與此有關? –

回答

3

只是做一個自定義的語法分析器,它的完成速度比試圖圖瀏覽器如何不同治療不同時間字符串格式:

function parse(datestring){ 
    var months = {"Jan":0,"Feb":1,"Mar":2,"Apr":3,"May":4,"Jun":5,"Jul":6,"Aug":7,"Sep":8,"Oct":9,"Nov":10,"Dec":11} 
    var timearray = datestring.split(/[\-\ \:]/g) 
    return Date.UTC(timearray[2],months[timearray[1]],timearray[0],timearray[3],timearray[4]) 
} 

這將返回Unix時間以毫秒爲單位,並且它使用UTC,從而避免CO夏時制時間缺失小時的複雜情況。它與您指定的格式一起工作,但不驗證輸入。

2
if (enDate.getTime() > stDate.getTime()) { 
    alert('oh no'); 
} 

推到數字(+enDate)是相同的使用方法.getTime()

if (+enDate > +stDate) { 
    alert('oh no'); 
} 
+0

不起作用,IE不喜歡日期\時間格式 –

0
var stDate = new Date(date +" "+ start); 
var enDate = new Date(dateEnd + " "+ end); 

     if (enDate.getTime() > stDate.getTime()) { 
      alert('on no'); 
     } 

要創建Date對象:

var d = new Date(); 
var d = new Date(milliseconds); 
var d = new Date(dateString); 
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds); 

的getTime()返回自1970/01/01

的毫秒數
+0

不起作用,IE不喜歡日期\時間格式 –

+0

@ D-W getTime()適用於所有瀏覽器。 http://www.w3schools.com/jsref/jsref_settime.asp – HMarioD

+0

可能是你的變量有問題(日期,開始,日期結束或結束)嘗試創建日期,如新的日期(「2013/01/03 12: 30" );和新日期(「2013/01/03 12:31」);並看看是否工作。 – HMarioD