1

我在一个网站上有一些不符合“我的”规则的代码。

编码:

<script>
function do_date()
  {
    v=document.getElementById('date').value;
    n=v.split('-');
    y=n[0];
    m=n[1];
    d=n[2];
    var g=new Date(d,m,y);
    var weekday=new Array(7);
    weekday[0]="Sunday";
    weekday[1]="Monday";
    weekday[2]="Tuesday";
    weekday[3]="Wednesday";
    weekday[4]="Thursday";
    weekday[5]="Friday";
    weekday[6]="Saturday";
    booking_date=d+'/'+m+'/'+y;
    bd=y+''+m+''+d;
    wd=weekday[g.getDay()]
    document.getElementById('viewdate').innerHTML=wd+' '+booking_date;
  }
</script>

<input type="date" id="date" name="date" value="" onchange="do_date()" style="width:150px;" /> 

该变量wd在 2013 年 7 月 5 日星期五返回 5,但在 2013 年 7 月 8 日星期一它返回 2 实际上从 2013 年 7 月 1 日到 2013 年 7 月 31 日的连续几天返回以下内容:

g.getDay() log=0,1,2,4,5,6,0,2,3,5,0,1,2,3,5,6,0,1,3,4,5,0,2,3,4,6,0,1,2

它以非常奇怪的顺序显示日期

周日,周一,周二,周三,周四,周五,周六,周日,周一,周二等。

我显然做错了什么,但为了我的一生,我无法解决。

如果有人能指出我正确的方向,我将不胜感激:)

4

1 回答 1

3

您正在创建错误的日期变量。查看构造函数的语法(来自doc):

new Date();
new Date(value);
new Date(dateString);
new Date(year, month, day [hour, minute, second, millisecond]);

请注意,月份必须是 0 到 11 之间的值。所以在您的代码中:

var g=new Date(y, m - 1, d);
于 2013-07-03T13:05:48.223 回答