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