getDay() 是否符合 ISO 8601?

Joh*_*n H 5 javascript

我很难确定 JavaScript 的getDay()方法 ( http://www.w3schools.com/jsref/jsref_getday.asp ) 是否符合 ISO 8601。

getDay()返回0星期日,1星期一等。

该文档建议映射到这样的日期名称:

var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
...
var n = weekday[(new Date()).getDay()];
Run Code Online (Sandbox Code Playgroud)

我只能看到 ISO 标准将星期一定义为一周的第一天。我认为这意味着星期一应该是 0,而不是星期日。

有人对这个有经验么?您能否澄清并建议覆盖使星期一成为一周第一天的方法?

ic3*_*3rg 5

var weekday=new Array(7);
weekday[0]="Monday";
weekday[1]="Tuesday";
weekday[2]="Wednesday";
...
var n = weekday[((new Date()).getDay() + 6) % 7 + 1];
Run Code Online (Sandbox Code Playgroud)

或扩展日期原型:

Date.prototype.getISODay = function(){ return (this.getDay() + 6) % 7 + 1; }
Run Code Online (Sandbox Code Playgroud)

然后使用

var n = weekday[(new Date()).getISODay()];
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 2

仅当您想要使用工作日实际表示为数字的日期格式(例如格式)YYYY-Www-D,或者如果您想要获取特定日期的周数时,如何表示工作日才重要。

否则,工作日如何以数字表示并不重要。星期一仍然是星期一。

  • @JonnyH:是的,如果您希望根据 ISO8601 格式将工作日表示为数字,那么您必须使用 `(theDate.getDay() + 6) % 7 + 1` 转换 Javascript 工作日数字以制作星期日7 而不是 0。 (3认同)