我很难弄清楚JavaScript的getDay()方法(http://www.w3schools.com/jsref/jsref_getday.asp)是否符合ISO8601。
getDay()返回周日的0,周一的1等等。
文档建议映射到日期名称,如下所示:
var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
...
var n = weekday[(new Date()).getDay()];我只能看到ISO标准将星期一定义为一周的第一天。我假设这意味着周一应该是0,而不是周日。
有没有人有这方面的经验?您能澄清一下吗?您是否建议覆盖该方法以使星期一成为一周的第一天?
发布于 2013-01-11 09:46:48
只有当您想要使用日期格式,其中工作日实际表示为数字时,或者您想要获取特定日期的周数字时,如何表示工作日才是重要的。
否则,如何用数字表示工作日就无关紧要了。星期一仍然是星期一。
发布于 2013-01-11 09:41:51
var weekday=new Array(7);
weekday[0]="Monday";
weekday[1]="Tuesday";
weekday[2]="Wednesday";
...
var n = weekday[((new Date()).getDay() + 6) % 7 + 1];或者扩展日期原型:
Date.prototype.getISODay = function(){ return (this.getDay() + 6) % 7 + 1; }然后使用
var n = weekday[(new Date()).getISODay()];发布于 2013-01-11 10:42:00
我能找到的唯一的来源是Wikipedia和this page,哪个州一周的日期应该是哪个数字。两者都建议星期的数字应该是从1到7,并从周一开始。
我支持ic3b3rg关于扩展Date.prototype的建议,尽管我建议使用UTC和文字来获取名称,下面的例子使用了一个对象和一个匿名函数,所以名称只需要定义一次。
(function () {
var dayNames = {1: 'Monday', 2: 'Tuesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Friday', 6: 'Saturday', 7: 'Sunday'};
// Local time
Date.prototype.getISODay = function () {return this.getDay() || 7;};
Date.prototype.getISODayName = function () {return dayNames[this.getDay() || 7];};
// Date.prototype.getDayName = Date.prototype.getISODayName
// UTC
Date.prototype.getUTCISODay = function () {return this.getUTCDay() || 7;};
Date.prototype.getUTCISODayName = function () {return dayNames[this.getUTCDay() || 7];};
// Date.prototype.getUTCDayName = Date.prototype.getUTCISODayName;
}());由于日期名称将与ISO日期名称相同(假设为英文),因此我添加了额外的行,如果您想要这两行代码,可以将其取消注释。
https://stackoverflow.com/questions/14270281
复制相似问题