2011-09-01 149 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';