2010-07-18 78 views
1

該頁面在Chrome中正常工作,但我在FF中遇到了這一個小錯誤,而在IE中出現了另一個問題。非常感謝這些問題的幫助。由於香港專業教育學院在FF錯誤最長的被難倒,我也有一個開始:在FF中返回無效日期的日期(dateString)

下面的代碼:http://truxmapper.appspot.com/sched.html

日期選擇器使用的格式「07-08-2010 23:28選擇日期」。現在,我需要把這個時間作爲一個參數傳遞給我的servlet,這個時間表示的時間很長。這在Chrome中不是問題。 Date對象接受上面給出格式的字符串,但是當我嘗試在FF中使用字符串實例化的日期上使用getTime()時,它返回NaN。因此,我在鏈接的頁面上做了一些處理,要求用戶重新輸入日期,如果它的讀取爲NaN。即使你重新輸入日期,它仍然會閱讀NaN,這顯然不是一個解決方案。我需要知道爲什麼Date函數不會使用您在FF中的輸入文本字段中看到的字符串實例化。

在IE中,由於某種原因它告訴我sTime是未定義的。

謝謝!

回答

3

嘗試

new Date(Date(dateString)).getTime() 

(感覺像一個醜陋的解決辦法...)

編輯:這會產生錯誤的結果。


Javascript中使用的日期格式應爲YYYY MM DD HH:mm:ss。您可以將格式轉換成這種形式

// dateString = "07-08-2010 23:28"; 
dateString = dateString.replace(/(\d+) (\d+) (\d+)/, '$3-$1-$2'); 

但在註釋中,有5的ECMAScript標準之前使用的JavaScript沒有標準的日期格式。最好直接解析dateString:

m = dateString.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/) 
date = new Date(+m[3], m[1]-1, +m[2], +m[4], +m[5]); // Note: January = 0. 
+0

哇,這真的很好,謝謝!不過,我不明白你的建議背後的原因。就標準而言,我想要以現在的界面顯示日期。你是否建議我將字符串格式化以符合標準?另外,你知道在IE中可能發生什麼嗎? – 2010-07-18 06:53:33

+0

該解決方法的目的是什麼? 'new Date(dateString).getTime()'應該沒問題,雖然'new Date(Date.parse(dateString))。getTime()'也是有意義的,如果你不相信Date ctor接受一個字符串我似乎記得一些舊的實現不會)。此外,chrome會分析'2010-07-08 23:28:00',但不會'2010-07-08T23:28:00';我不確定'T'是個好主意...... – 2010-07-18 06:54:54

+1

@Kenny:請注意,ISO8601格式是由ECMAScript 5標準引入的,目前尚未得到廣泛支持,在以前的ES3版本中也有沒有描述*標準格式*,該規範的唯一要求是'Date.parse'方法應該能夠將字符串解析爲Date對象產生的'toString'或'toUTCString'方法,而這些方法是完全實施依賴。最安全的方法是手動解析它... – CMS 2010-07-18 06:58:37

5

該日期格式不明確。嘗試它爲yyyy-mm-dd而不是mm-dd-yyyy或dd-mm-yyyy。

相關問題