在JQuery中获取上个月的第一个和最后一个日期

时间:2016-02-03 05:24:41

标签: javascript jquery date

我有这个脚本,

 var express = require('express');
   var router = express.Router();

  /* GET home page. */
  router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
  });
  router.post('/users', function(req, res, next) {
  new user({
   name:req.body.name,
   email:req.body.email

  }).save(function(err, docs){
   if(err)
   {
     res.json(err);
   }
   else
   {
     res.send('success Inserted !');
   }
  });
  });

   module.exports = router;

有了这个,我获得了当天的最后3天,但在这种情况下,今天是02,如果我休息两天,我获得0但我想在这种情况下是上个月的最后一天,怎么办?< / p>

这是我的fiddle

7 个答案:

答案 0 :(得分:13)

在当月的第一天new Date(now.getFullYear(), now.getMonth(), 1 - 1)获取上个月的最后一天会在1天前创建一个日期:new Date(now.getFullYear(), now.getMonth() - 1, 1)

要获取上个月的第一天,我们应该从月份组件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));中减去1,但如果当前月份是1月(0)而上个月是12月(11),则会出现问题。因此,我将月份表达式包装成一个循环,因此它总是返回一个positiove值。

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:3)

尝试使用bellow

var date = new Date();
var monthStartDay = new Date(date.getFullYear(), date.getMonth(), 1);
var monthEndDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);

答案 2 :(得分:2)

你可以这样做

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

答案 3 :(得分:1)

试试这个:获取今天的日期并将日期设置为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 Demo

答案 4 :(得分:1)

我猜到的是,如果当前月份是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找到您想要的任何内容。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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