[英]why getDay() in javascript return +1 day of a week?
今天是 2016 年 5 月 7 日,星期六但是当我实施 js 实践时,getDay() 总是返回正确的数字加一。 所以我做了这个测试。
今天是星期六,所以我希望返回 5 而不是 6。
星期几:
var d = new Date(2016, 5, 20); // June 20, 2016
d.getDay();
从0(星期日)开始计数,1表示星期一,依此类推...
@麦克C:
0星期日
1个星期一
2星期二
3星期三
4星期四
5星期五
6星期六
您也会与月有相同的情况。 getMonth()返回的值是0到11之间的整数。0对应于1月,1对应于2月,依此类推。
1月0日
2月1日
3月2日
4月3日
5月4
6月5日
7月6日
8月7日
9月8日
10月9日
11月10日
12月11日
var d = new Date(2016, 5, 20); // June 20, 2016
d.getMonth(); // 5
为什么?
假定@ChristopherW,这可以帮助引用名称数组。
var
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var d = new Date(2016, 5, 20); // June 20, 2016
months[d.getMonth()]; // "June"
days[d.getDay()]; // "Monday"
对于开发人员来说非常方便。 但是还有零索引的另一个原因。 JavaScript的语法实际上是从C派生的。让我们分析C的本地时间函数。
C库函数struct tm * localtime(const time_t * timer)使用计时器指向的时间,用代表相应本地时间的值填充tm结构。 计时器的值分解为结构tm并以本地时区表示。
struct tm *localtime(const time_t *timer)
此函数返回一个指向tm结构的指针,其中已填充了时间信息。以下是tm结构信息:
struct tm { int tm_sec; /* seconds, range 0 to 59 */ int tm_min; /* minutes, range 0 to 59 */ int tm_hour; /* hours, range 0 to 23 */ int tm_mday; /* day of the month, range 1 to 31 */ int tm_mon; /* month, range 0 to 11 */ int tm_year; /* The number of years since 1900 */ int tm_wday; /* day of the week, range 0 to 6 */ int tm_yday; /* day in the year, range 0 to 365 */ int tm_isdst; /* daylight saving time */ };
如您所见,月份从0到11开始,星期几从0到6。
您可以简单地添加 6 并使用模数运算符。
var d = new Date(2016, 5, 20);
var weekday = (d.getDay() + 6) % 7;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.