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

时间:2016-05-06 16:18:46

标签: javascript date

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

enter image description here

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

2 个答案:

答案 0 :(得分:2)

  

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

Source

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

  1. 星期一
  2. 星期二
  3. 星期三
  4. 星期四
  5. 星期五
  6. 星期六

答案 1 :(得分:0)

星期几:

var d = new Date(2016, 5, 20); // June 20, 2016
d.getDay();

从0(星期日)开始计数,1表示星期一等...

@Mike C:

  • 0 星期日

  • 1 星期一

  • 2 星期二

  • 3 星期三

  • 4 周四

  • 5 星期五

  • 6 周六

月份也会出现同样的情况。 getMonth()返回的值是0到11之间的整数.0对应于1月,1到2月,依此类推。

  • 0 1月

  • 1 二月

  • 2 3月

  • 3 4月

  • 4 可能

  • 5 六月

  • 6 7月

  • 7 8月

  • 8 九月

  • 9 10月

  • 10 11月

  • 11 12月

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的localtime函数。

  

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。