javascript中的getMonth上个月给出了

时间:2013-09-04 21:46:32

标签: javascript date

我正在使用一个日期选择器,它以2013年7月7日星期日00:00:00格式提供日期。 即使这个月说七月,如果我做了一个getMonth,它也会给我上一个月。

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013");
d1.getMonth());//gives 6 instead of 7

我做错了什么?

5 个答案:

答案 0 :(得分:170)

因为getmonth()从0开始。您可能希望d1.getMonth() + 1达到您想要的效果。

答案 1 :(得分:15)

getMonth()函数基于零索引。您需要执行d1.getMonth() + 1

最近我使用了 Moment.js 库,但从未回头。试试吧!

答案 2 :(得分:2)

const d = new Date();
const time = d.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', second:'numeric', hour12: true });
const date = d.toLocaleString('en-US', { day: 'numeric', month: 'numeric', year:'numeric' });

OR

const full_date = new Date().toLocaleDateString(); //Date String
const full_time = new Date().toLocaleTimeString(); // Time String

输出

日期= 8/13/2020

时间= 12:06:13 AM

答案 3 :(得分:0)

假设您使用变量

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013");

月份需要+1才能准确,它从0开始计数

d1.getMonth() + 1 // month #

相反...这些方法不需要加1

d1.getSeconds()   // seconds #
d1.getMinutes()   // minutes #
d1.getDate()      // date    #

请注意,它不是.getDate()getDay()

d1.getDay()       // day of the week as a #

希望这会有所帮助

我怀疑这些方法由于历史原因缺乏一致性

答案 4 :(得分:0)

是的,这似乎是某人愚蠢的决定,将月份设为零索引,而年份和日期不是。这是我用来将日期转换为字段预期格式的一个小函数...

  const now = new Date();
  const month = (date) => {
    const m = date.getMonth() + 1;
    if (m.toString().length === 1) {
      return `0${m}`;
    } else {
      return m;
    }
  };

  const formattedDate = `${now.getFullYear()}-${month(now)}-${now.getDate()}`