在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)

要获得上个月的第一天,我们应该从月份组件new Date(now.getFullYear(), now.getMonth() - 1, 1)但是如果当前月份是1月(0)则存在问题而上一个月是十二月(11)。 因此,我将月份表达式包装为创建一个循环,因此它总是返回一个positiove值。

 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); 

我猜到的是,如果当前月份是2月,那么你的输出应该是1,31因为1月的第一天和最后一天是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找到您想要的任何内容。

试试这个:获取今天的日期并将日期设置为1,这将是当前月份的第一个。 然后将小时设置为-1,这将把它转移到前一个月的前一个月。 然后将日期设置为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); 

JSFiddle演示

你可以这样做

 //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); 

上个月结束的一个方便技巧是获取当前日期并使用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());