簡體   English   中英

JavaScript Date()構造函數不起作用

[英]Javascript Date() constructor doesn't work

我有一個問題-

javascript Date("mm-dd-yyyy")構造函數不適用於FF。 它適用於IE。

  • IE: new Date("04-02-2008") => "Wed Apr 2 00:00:00 EDT 2008"
  • FF2: new Date("04-02-2008") => Invalid Date

因此,讓我們嘗試另一個構造函數。 試試這個構造函數Date("yyyy", "mm", "dd")

  • IE: new Date("2008", "04", "02"); => "Fri May 2 00:00:00 EDT 2008"
  • FF: new Date("2008", "04", "02"); => "Fri May 2 00:00:00 EDT 2008"
  • IE: new Date("2008", "03", "02"); => "Wed Apr 2 00:00:00 EDT 2008"
  • FF: new Date("2008", "03", "02"); => "Wed Apr 2 00:00:00 EDT 2008"

因此, Date("yyyy", "mm", "dd")構造函數使用索引0表示一月。

有人處理過嗎?
必須有比從月份中減去1更好的方法。

Date對象定義是month字段使用值0-11。

我相信使用String的構造函數是系統相關的(更不用說語言環境/時區的相關性),因此最好使用將年/月/日指定為單獨參數的構造函數。

順便說一句,在Firefox中,

new Date("04/02/2008");

對我來說效果很好-它將解釋斜杠,但不能解釋連字符。 我認為這證明了我的觀點,即使用字符串構造Date對象是有問題的。 使用明確的值表示月/日/年:

new Date(2008, 3, 2);

確實是個好戲,我剛剛發現了很難的方法(通過仔細考慮)。 但是我使用了更自然的日期字符串和連字符:-)

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]-1myDate[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM