繁体   English   中英

使用javascript显示今天日期之前3天的星期几

[英]displaying the day of the week 3 days before today's date using javascript

我尝试使用此javascript来显示访问html页面之前的3天中的星期几。 今天星期天,星期一或星期二不起作用。 (我认为问题是天数被编号为0-6,而在var date行中未考虑负数)

    var now = new Date();
    var days = new Array(
      'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    var months = new Array(
      'January','February','March','April','May',
      'June','July','August','September','October',
      'November','December');
    var date = ((now.getDate()<10) ? "0" : "")+ now.getDate()-3;
    function fourdigits(number) {
      return (number < 1000) ? number + 1900 : number;}
    today =  days[now.getDay() -3] + ", " +
       months[now.getMonth()] + " " +
       date + ", " +
       (fourdigits(now.getYear()));
     document.write(today);

您的代码有很多问题。

<SCRIPT LANGUAGE="JavaScript">

脚本元素的language属性在HTML 4中已弃用,在后续版本中已删除。

<!--

HTML注释定界符在脚本元素的开头和结尾处是允许的,但不应使用。 他们已经20年没用了。

var date = ((now.getDate()<10) ? "0" : "")+ now.getDate()-3;

当日期为1到3时,表达式的第一部分将返回一个字符串,例如“ 0”或“”。 第二部分将返回一个从-2到0的数字,因此结果将是从“ 0-2”到“ 00”。

您可以执行以下操作:

var date = now.getDate();
date = (date < 10? '0' : '') + date;

然后是:

today =  days[now.getDay() -3] + ", " +

getDay返回代表星期几的数字,0代表星期日,星期六代表6,因此从星期日到星期二(数字0–2),您将尝试访问不存在的days属性,该属性将返回undefined

   (fourdigits(now.getYear()));

getYear总是返回减去1900的年份。请改用getFullYear

请参阅在哪里可以找到有关在JavaScript中格式化日期的文档? 并将+1添加到当前日期

您应该从日期减去3天开始,然后格式化结果以输出:

 var now = new Date(); now.setDate(now.getDate() - 3); var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday', 'Friday','Saturday']; var months = ['January','February','March','April','May','June','July', 'August','September','October','November','December']; var date = now.getDate(); date = (date < 10? "0" : "") + date; var today = days[now.getDay()] + ", " + months[now.getMonth()] + " " + date + ", " + now.getFullYear(); document.write(today); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM