2010-06-25 104 views
9

我有以下代碼javascript日期對象UK日期

datePicker.change(function(){ 
     dateSet = datePicker.val(); 
     dateMinimum = dateChange(); 
     dateSetD = new Date(dateSet); 
     dateMinimumD = new Date(dateMinimum); 
     if(dateSetD<dateMinimumD){ 
      datePicker.val(dateMinimum); 
      alert('You can not amend down due dates'); 
     }  
    }) 

dateSet = 「01/07/2010」 dateMinimum = 「23/7/2010」

兩個都是英國格式。當比較日期對象時,dateSetD應該小於dateMinimumD,但它不是。我認爲這與我使用英國日期dd/mm/yyyy的事實有關。我需要改變什麼來實現這個功能?

+3

英國的日期是「dd/MM/yyyy」而不是「mm/dd/yyyy」。 – ChrisF 2010-06-25 10:31:49

+0

是那些日子之一。更新的問題。 – Linda 2010-06-25 10:33:21

回答

11

JavaScript的Date構造函數不解析以那種形式的字符串(年部件無論是英國還是美國格式)。見the spec的細節,但你可以通過部分構建日期部分:

new Date(year, month, day); 

MomentJS可能是處理日期靈活實用。 (這個答案以前與this lib聯繫在一起,但它並沒有在很長一段時間內保留。)

5
  • 拆分日爲日,月,使用dateSet.split('/')
  • 按照正確的順序通過這些部件的Date constructor.
0

是的,您使用的日期格式有問題。如果您未設置日期格式,則使用的默認日期爲'mm/dd/yy。所以,你應該設置您的首選日期,甲酸,當你創建如下當您創建的日期選擇器:

$(".selector").datepicker({ dateFormat: 'dd/mm/yyyy' }); 

或者你可以將其設:

$.datepicker.formatDate('dd/mm/yyyy'); 
0

當您嘗試創建一個日期對象:

new Date(year, month, day, hours, minutes, seconds, milliseconds) 

實施例:

dateSetD = new Date(dateSet.year, dateSet.month, dateSet.day); 

注意:JavaScript日期對象的月份以00開頭,因此您需要相應地調整日期。

+0

JavaScript沒有Python風格的關鍵字參數。你在這個例子中做的是將'dateSet.year'賦值給一個意外的全局變量'year'! – bobince 2010-06-25 11:08:42

12

這是我最後只是:

var lastRunDateString ='05/04/2012'; \\5th april 2012 
var lastRunDate = new Date(lastRunDateString.split('/')[2], lastRunDateString.split('/')[1] - 1, lastRunDateString.split('/')[0]); 

注月份索引是從0-11。

7
var dateString ='23/06/2015'; 
var splitDate = dateString.split('/'); 
var month = splitDate[1] - 1; //Javascript months are 0-11 

var date = new Date(splitDate[2], month, splitDate[0]);