【问题标题】:displaying the day of the week 3 days before today's date using javascript使用javascript显示今天日期前3天的星期几
【发布时间】:2017-06-10 21:07:40
【问题描述】:

我尝试使用此 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);

【问题讨论】:

  • 如果你想做日期数学或渲染,我强烈推荐 moment.js。它比 vanilla js 日期更容易使用

标签: javascript date


【解决方案1】:

您的代码存在许多问题。

<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),您将尝试访问 days 的属性 不存在,这将返回 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);

【讨论】:

  • 效果很好。谢谢你,罗伯。
  • 这条评论可能是重复的:片段工作正常。谢谢@RobG。如何从站点的 css 文件运行(调用?)它?
  • 您不能从 CSS 文件调用 javascript 函数,它被解释为 text/css 而不是 text/javascript
  • 好的,我知道我无法从 CSS 文件中调用 javascript。我不希望我打算使用它的文件的读者能够通过使用 Source-View 查看和/或复制它。有什么建议吗?
  • 在服务器上运行。任何交给客户的东西都属于客户,用户可以用它做他们想做的事。见Hiding external JavaScript
猜你喜欢
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多