繁体   English   中英

为什么 javascript 中的 getDay() 返回一周中的 +1 天?

[英]why getDay() in javascript return +1 day of a week?

今天是 2016 年 5 月 7 日,星期六但是当我实施 js 实践时,getDay() 总是返回正确的数字加一。 所以我做了这个测试。

在此处输入图像描述

今天是星期六,所以我希望返回 5 而不是 6。

getDay()方法根据本地时间返回指定日期的星期几,其中0代表星期日。

资源

因此,如果周日为0,则您将获得其他日期的这些值:

  1. 星期一
  2. 星期二
  3. 星期三
  4. 星期四
  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日

  • 21

  • 3月2

  • 4月3

  • 5月4

  • 6月5

  • 7月6

  • 8月7

  • 9月8

  • 109

  • 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM