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

Incorrect day of week showing in input date field

本文关键字:不正确 显示 日期 字段 输入      更新时间:2023-09-26

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

代码:

<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年七月8日(星期一),它实际上从2013年七月一日到七月三十一日连续返回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

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

星期日、星期一、星期二、星期三、星期四、星期五、星期六、星期日、星期一和星期二等。

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

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

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

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);