如果您提供0的dayValue在Date.setFullYear你上一个月的最后一天:
d = new Date(); d.setFullYear(2008, 11, 0); // Sun Nov 30 2008
Run Code Online (Sandbox Code Playgroud)
在mozilla中提到了这种行为.这是一个可靠的跨浏览器功能还是我应该考虑其他方法?
我一直在使用这个功能,但我想知道什么是最有效和最准确的方法.
function daysInMonth(iMonth, iYear) {
return 32 - new Date(iYear, iMonth, 32).getDate();
}
Run Code Online (Sandbox Code Playgroud) primefaces日历组件默认为获取日期.我可以只获得没有日期的月份和年份.
如何只获得一个月和一年
所以这非常简单:
import startOfMonth from 'date-fns/start_of_month';
export const getFirstDayThisMonth = date => {
const firstDay = startOfMonth(date);
return firstDay;
};
Run Code Online (Sandbox Code Playgroud)
给定输入(例如):
1987-02-02T00:00:00.000Z
它返回:
1987-01-31T23:00:00.000Z
当尝试根据此答案中提到的方法生成第一个日期时,会准确地重现该错误:
var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
Run Code Online (Sandbox Code Playgroud)
运行 jest-tests 时出现错误,并且无法在按预期工作的控制台中重现:
const day1 = new Date('1987-02-02');
undefined
const day2 = new Date(day1.getFullYear(),day1.getMonth(),1)
undefined
day2
Sun Feb 01 1987 00:00:00 GMT+0100 (Central European Standard Time)
Run Code Online (Sandbox Code Playgroud)
如果在第二个解决方案中我还将第四个参数(小时)设置为 1,它会正确处理:
1987-02-02T00:00:00.000Z
返回1987-02-01T00:00:00.000Z
和
2001-03-03T00:00:00.000Z
返回2001-03-01T00:00:00.000Z
但
2002-04-04T00:00:00.000Z
回报2002-03-31T23:00:00.000Z
我真的不知道是什么原因导致了这个问题,当时间设置为 00:00:00 时,感觉好像有一些滚动到前一个日期? …
如何使用Javascripts获取上个月的开始日期和结束日期.
举个例子:
今天 - 09/07/2013
我需要输出
上个月开始日期:01/06/2013上个月结束日期:2013年6月30日
我发现此代码可用于查找当月的第一个日期和最后一个日期。
var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
Run Code Online (Sandbox Code Playgroud)
今天是 11/1/2018
我将这段代码用于我正在为我的一个项目开发的日历。即使它应该返回该月的第一天,因为2018-01-01T18:30:00.000Z它返回第一天为2017-12-31T18:30:00.000Z,最后日期为2018-01-30T18:30:00.000Z。
但一月有31天。那么这段代码有什么问题呢?
我从 stackoverflow问题中找到了代码