![](/img/trans.png)
[英]how to get the first date and last date of the month whenever I change the month/year in jquery ui datepicker
[英]Get the first and last date of the previous month in JQuery
我有这个脚本,
var today = new Date();
var dd = today.getDate();
var ddd = today.getDate()-1;
var dddd = today.getDate()-2;
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10){
dd='0'+dd
}
if(mm<10){
mm='0'+mm
}
if(ddd<10){
ddd='0'+ddd
}
var today = dd+'/'+mm+'/'+yyyy;
var d2 = ddd+'/'+mm+'/'+yyyy;
var d3 = dddd+'/'+mm+'/'+yyyy;
有了这个,我获得了当天的最后 3 天,但在这种情况下,今天是 02,如果我 rest 两天我获得 0,但在这种情况下我想要上个月的最后一天,怎么做?
这是我的小提琴
那是当月的第一天new Date(now.getFullYear(), now.getMonth(), 1)
获取上个月的最后一天 创建一个提前 1 天的日期: new Date(now.getFullYear(), now.getMonth(), 1 - 1)
。
要获得上个月的第一天,我们应该从月份组件new Date(now.getFullYear(), now.getMonth() - 1, 1)
但如果当前月份是 1 月 (0),则会出现问题上个月是 12 月 (11)。 因此,我将月份表达式包装成一个循环,因此它总是返回一个正值。
var now = new Date(); var prevMonthLastDate = new Date(now.getFullYear(), now.getMonth(), 0); var prevMonthFirstDate = new Date(now.getFullYear() - (now.getMonth() > 0 ? 0 : 1), (now.getMonth() - 1 + 12) % 12, 1); var formatDateComponent = function(dateComponent) { return (dateComponent < 10 ? '0' : '') + dateComponent; }; var formatDate = function(date) { return formatDateComponent(date.getMonth() + 1) + '/' + formatDateComponent(date.getDate()) + '/' + date.getFullYear(); }; document.write(formatDate(prevMonthFirstDate) + ' - ' + formatDate(prevMonthLastDate));
尝试使用波纹管
var date = new Date();
var monthStartDay = new Date(date.getFullYear(), date.getMonth(), 1);
var monthEndDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
你可以这样做
//one day previous Date var date = new Date(); date.setDate(date.getDate() - 1); console.log(date.getDay()); //for previous month last date var date = new Date(); date.setDate(0); console.log(date); //for perivous Month First date var date = new Date(); date.setDate(0); date.setDate(1); console.log(date);
试试这个:获取今天的日期并将日期设置为 1,这将获得当月的第一个日期。 然后将小时设置为 -1,这将在最后一天将其移至前几个月。 然后将 day 设置为 1 以获取上个月的第一天。
var today = new Date();
var dd = today.getDate();
today.setDate(1); // going to 1st of the month
today.setHours(-1); // going to last hour before this date even started.
var lastDay = today.toLocaleDateString('en-GB', {
year: 'numeric',
month: 'numeric',
day: 'numeric'
}).split(' ').join('-');
alert("last day of previous month " + lastDay);
today.setDate(1); // going to 1st of the previous month
var firstDay = today.toLocaleDateString('en-GB', {
year: 'numeric',
month: 'numeric',
day: 'numeric'
}).split(' ').join('-');
alert("first day of previous month " + firstDay);
我猜测的是,如果当前月份是二月,那么您的输出应该是1,31
因为一月的第一天和最后一天是 1 和 31。所以如果是这样的话
var toDay = new Date();
var myDate = new Date(2016,toDay.getMonth()-1);
Fri Jan 01 2016 00:00:00 GMT+0530 (India Standard Time)
这将被分配为上个月的第一天。
另外,对于第二种情况
var myDate = new Date(2016, toDay.getMonth());
myDate = new Date(myDate -1);
Sat Jan 31 2015 23:59:59 GMT+0530 (India Standard Time)
您可以使用myDate
来查找您想要的任何内容。
获取上个月月底的一个方便技巧是获取当前日期并使用setDate(0)
。 然后使用它来创建一个新的日期对象和setDate(1)
为月初
var prevMonthEnd = new Date(); prevMonthEnd.setDate(0); var beginLastMonth = new Date(prevMonthEnd); beginLastMonth.setDate(1); console.log([beginLastMonth.toString(), prevMonthEnd.toString()])
var firstDay = new Date(); var secondDay = new Date(); var thirdDay = new Date(); //Now say you want to set secondDay as before 2 days secondDay.setDate(secondDay.getDate()-2); //Now say you want to set thirdDay as after 2 days thirdDay.setDate(thirdDay.getDate()+2); alert("firstDay: "+firstDay+", secondDay:"+secondDay+", thirdDay:"+thirdDay); alert("date of thirdDay: dd/mm/yyyy "+thirdDay.getDate()+"/"+ (thirdDay.getMonth()+1) +"/"+thirdDay.getFullYear());
我知道很多人已经回答了这个问题,但我只是想出了一个3 行解决方案,所以我想我可以分享它以防万一有人需要它。
let date = new Date(); let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 2); let lastDay = new Date(date.getFullYear(), date.getMonth(), 1); console.log(firstDay.toISOString(), lastDay.toISOString())
即使当前月份是一月,此解决方案也会动态工作,此方法将自动检测上一年。
例子:
如果当前日期是: 2022-01-12
上个月的第一天: 2021-12-01
上个月最后一天: 2021-12-31
**此外,您可以使用setUTCHours
将两个日期的时间设置为00:00:00
,如下所示:
let date = new Date(); let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 2); firstDay.setUTCHours(0,0,0,0); let lastDay = new Date(date.getFullYear(), date.getMonth(), 1); lastDay.setUTCHours(0,0,0,0); console.log(firstDay.toISOString(), lastDay.toISOString())
如果您需要,这是一个有效的Fiddle示例。
var mydate = new Date(2020,2,1); // march 1st 2020 leap year
var lastdate = new Date(mydate.getFullYear(),mydate.getMonth(),0);// get last date of prev month
var firstdate = new Date(lastdate.getFullYear(), lastdate.getMonth(), 1);//get first date using last date
alert('' + firstdate.toDateString() + '');
alert('' + lastdate.toDateString() + '');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.