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

时间:2017-06-10 21:07:40

标签: javascript date

我尝试使用此javascript来显示访问html页面前3天的星期几。今天是星期日,星期一或星期二,它不起作用。 (我认为问题是天数为0-6而不考虑行变量日期中的负数)

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

1 个答案:

答案 0 :(得分:0)

您的代码存在许多问题。

<SCRIPT LANGUAGE="JavaScript">

脚本元素的语言属性在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),你将试图访问天不存在,将返回 undefined

   (fourdigits(now.getYear()));

getYear总是返回年份少于1900年。请改用getFullYear

请参阅Where can I find documentation on formatting a date in JavaScript?Add +1 to current date

您应首先从日期减去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);