输入日期字段中显示的星期几不正确

时间:2013-07-03 12:56:26

标签: javascript date input

我在网站上有一些代码,而不是我的'规则。

代码:

<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日星期一,它从7月1日到2013年7月31日连续几天返回2以下内容:

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

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

星期日,星期一,星期二,<星期三,星期四,星期五,星期六,星期日,星期一,星期二等。

我显然做错了什么,但对于我的生活,我无法解决问题。

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

1 个答案:

答案 0 :(得分: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);