2011-09-01 145 views
1

我正在嘗試爲jQuery實現tablesorter plugin的解析器,並且我對日期的getTime()值有這種奇怪的行爲。下面的代碼:JavaScript日期getTime()不一致

var dateOne = '03/04/2010'; 
var dateTwo = '28/10/2008'; 
var dateOneTime = new Date(dateOne).getTime(); 
var dateTwoTime = new Date(dateTwo).getTime(); 
var diff = dateOneTime - dateTwoTime; 

alert('dateOneTime: ' + dateOneTime + '\ndateOne: ' + dateOne + '\nDateTwoTime: ' + dateTwoTime + '\ndateTwo : ' + dateTwo + '\none - two: ' + diff); 

給出了2010年的日期,成爲第1267十億左右,爲2008年日期1271年十億一個的getTime()的結果。因此從dateOne中減去dateTwo給出一個負數。爲什麼是這樣?當然,2008年的dateTwo值應該更小?

+1

嘗試'10月28日/ 2008'。 –

+2

儘可能避免使用字符串構造函數。請參閱http://stackoverflow.com/questions/163563/javascript-date-constructor-doesnt-work –

回答

4

日期預計MM/DD/YYYY

您傳遞DD/MM/YYYY

+0

是的。就是這個。我是一個白癡。 (我必須等10分鐘才能接受你的回答)。 – Robert

+0

不是一個白癡,只需要處理其他時間格式。 :) – epascarello

1

默認情況下,格式爲mm/dd/yyyy。因此,28/10/2008被解釋爲04/10/2010

1

當您在JS via a string中初始化日期時,它應該是符合RFC1123的格式 - 您的格式不是。

0

新日期(dateTwo)被錯誤地解釋爲2010年4月10日,因爲Date構造函數期待MM/DD/YYYY而不是您正在傳遞的DD/MM/YYYY。

嘗試

var dateOne = '04/03/2010'; 
var dateTwo = '10/28/2008';