[英]Javascript Date() constructor doesn't work
我有一個問題-
javascript Date("mm-dd-yyyy")
構造函數不適用於FF。 它適用於IE。
new Date("04-02-2008")
=> "Wed Apr 2 00:00:00 EDT 2008"
new Date("04-02-2008")
=> Invalid Date
因此,讓我們嘗試另一個構造函數。 試試這個構造函數Date("yyyy", "mm", "dd")
new Date("2008", "04", "02");
=> "Fri May 2 00:00:00 EDT 2008"
new Date("2008", "04", "02");
=> "Fri May 2 00:00:00 EDT 2008"
new Date("2008", "03", "02");
=> "Wed Apr 2 00:00:00 EDT 2008"
new Date("2008", "03", "02");
=> "Wed Apr 2 00:00:00 EDT 2008"
因此, Date("yyyy", "mm", "dd")
構造函數使用索引0
表示一月。
有人處理過嗎?
必須有比從月份中減去1更好的方法。
確實是個好戲,我剛剛發現了很難的方法(通過仔細考慮)。 但是我使用了更自然的日期字符串和連字符:-)
var myDateArray = "2008-03-02".split("-");
var theDate = new Date(myDateArray[0],myDateArray[1]-1,myDateArray[2]);
alert(theDate);
使用
var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]);
很好,但是當月和日值錯誤時,它顯示出一些奇怪的行為。
嘗試轉換一個日期,其中myDate[1]-1
和myDate[2]
值均為55。盡管輸入顯然不正確,Javascript仍返回日期。
在這種情況下,我希望使用javascript返回錯誤。
@弗蘭克:你是對的。 當您需要驗證日期時,
var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]);
不管用。
發生的事情是它不斷添加額外的參數。 例如:
new Date("2012", "11", "57") // Date {Sat Jan 26 2013 00:00:00 GMT+0530 (IST)}
Date對象會花費額外的時間(57-31 = 26),並將其添加到我們創建的日期中。
或者,如果我們嘗試使用以下方法構造日期對象:
new Date("2012", "11", "57", "57") //Date {Mon Jan 28 2013 09:00:00 GMT+0530 (IST)}
再增加2天9個小時(57 = 24 + 24 + 9)。
您說得對,月份被指示為索引,因此一月是月份數字0,十二月是月份數字11。
-並且沒有解決方法,盡管ECMA腳本定義中已明確指出,盡管通常可以使用一些簡單的技巧:
var myDate = "2008,03,02".split(",");
var theDate = new Date(myDate[0],myDate[1]-1,myDate[2]);
alert(theDate);
大膽的聲明。
您可能會感興趣: JavaScript Pretty Date 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.