【问题标题】:Incorrect day of week showing in input date field输入日期字段中显示的星期几不正确
【发布时间】:2013-07-01 04:22:08
【问题描述】:

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

代码:

<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

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

周日、周一、周二、周三、周四、周五、周六、周日、周一、周二等

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

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

【问题讨论】:

  • 添加日志以找出 g.getDay() 在您得到错误结果的日子里返回的内容。
  • 没有真正丢失的日子,只是被跳过了,你可以从问题中的逗号分隔数字列表中看到。
  • 日期构造函数应该是new Date(y,m,d)

标签: javascript date input


【解决方案1】:

您创建了错误的日期变量。查看构造函数的语法(来自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);

【讨论】:

  • 除了把 Y & d 弄混了,我忘记了几个月的 0 - 11 所以var g=new Date(y, m-1, d); 所以真的难怪!非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多