好了,使用下面的函数:涉及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