好了,使用下面的函數:涉及split的奇怪Javascript問題(「/」);
function date_add(date, days)
{
var dim = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31};
console.log(date.split("/"));
var date_arr = date.split("/");
console.log(date_arr);
...
}
我會在控制檯屏幕下面的輸出DATE_ADD( 「1990年12月8日」,1)
["12", "08", "1990"]
["2", "08", "1990"]
花費一個小時的掙扎什麼能解決這個奇怪的問題,一時興起,我改變了功能於以下內容:
function date_add(date, days)
{
var dim = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31};
date = date.split("/");
console.log(date);
...
}
奇妙的是,該代碼再次工作。現在不要誤解我的意思,我欣喜若狂。不過,我對嚴重擔心,爲什麼它的工作,但是,當其他人沒有。或多或少,我只關心爲什麼對方沒有工作。有沒有人有一個很好的解釋?
編輯:現在他們都壞了。 >>
對於托馬斯,這裏是全功能:
function date_add(date, days)
{
var dim = {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31};
console.log(date);
console.log(date.split("/"));
date_arr = date.split("/");
console.log(date)
if (date_arr[0][0] = "0") date_arr[0] = date_arr[0][1];
if (date_arr[1][0] = "0") date_arr[1] = date_arr[1][1];
var month = parseInt(date_arr[0]);
var day = parseInt(date_arr[1]);
var year = parseInt(date_arr[2]);
console.log(month);
console.log(day);
console.log(year);
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
dim[2] = 29;
day += days;
while (day < 1)
{
month--;
if (month < 1)
{
month = 12;
year--;
}
day += dim[month];
}
while (dim[month] < day)
{
day -= (dim[month]+1);
month++;
if (month > 12)
{
month = 0;
year++;
}
}
return ""+month+"/"+day+"/"+year;
}
對於輸入的功能,我叫使用
在什麼瀏覽器是這個?這聽起來很奇特...... FF和Chrome都給了我相同的結果。當然,他們**可以**。 – 2010-05-26 20:28:48
不知道該告訴你什麼 - 我將第一個代碼片段複製粘貼到firebug控制檯中,並在兩個日誌消息中獲得完全相同的輸出:'[「12」,「08」,「1990」]' – 2010-05-26 20:31:40
爲什麼不使用內置'Date'對象?或者是「每年的2月正好28天」是一項必需的功能? – kennytm 2010-05-26 20:34:21