给定一个日期对象,如何在javascript中获取上个月的第一天
function firstDayInPreviousMonth(yourDate) { var d = new Date(yourDate); d.setDate(1); d.setMonth(d.getMonth() - 1); return d; }
编辑:好吧......我肯定在这里学到了一些东西.我认为这是涵盖所有案例的最简单的解决方案(是的,它确实适用于1月份):
function firstDayInPreviousMonth(yourDate) { return new Date(yourDate.getFullYear(), yourDate.getMonth() - 1, 1); }
以下应该有效:
now = new Date(); if (now.getMonth() == 0) { current = new Date(now.getFullYear() - 1, 11, 1); } else { current = new Date(now.getFullYear(), now.getMonth() - 1, 1); }
请记住,月份是零基础,所以12月是11而不是12.
但是,正如其他人所指出的那样,即使作为原子构造函数的一部分,月份也会包含,所以以下内容也是可能的:
now = new Date(); firstDayPrevMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1);
我喜欢这个解决方案。它可能不是最简短的,但是重点介绍了并非所有人都会熟悉的Date()对象上的setDate()方法的一些功能:
function firstDayPreviousMonth(originalDate) { var d = new Date(originalDate); d.setDate(0); // set to last day of previous month d.setDate(1); // set to the first day of that month return d; }
它利用以下事实:.setDate(0)会将日期更改为指向上个月的最后一天,而.setDate(1)会将日期更改为(进一步)指向该月的第一天。它让核心Javascript库发挥了巨大的作用。
您可以在这里看到正在工作的Plunk。