【问题标题】:How to get previous date in javascript如何在javascript中获取上一个日期
【发布时间】:2020-06-09 02:39:15
【问题描述】:

我有一个日期,但我想从中获取上一个日期。我们如何使用 javascript 或 momentjs?

演示:https://stackblitz.com/edit/js-ykswiz?file=index.js

日期格式 dd-mm-yyyy.

例子:

 var date1=new Date("08-06-2020");
 console.log("Prev Date="+date1.getDate() - 1);// Prev Date=07-06-2020


 var date2=new Date("01-06-2020");
 console.log("Prev Date="+date2.getDate() - 1);// Prev Date=31-05-2020


 var date3=new Date("01-01-2021");
 console.log("Prev Date="+date3.getDate() - 1);// Prev Date=31-12-2020

在javascript中可以吗?

【问题讨论】:

  • 也许可以试试moment.js 库,特别是moment.add() :D 它会为你省去很多麻烦
  • @BlunderingPhilosopher:你能编辑我的代码吗?堆栈闪电战

标签: javascript momentjs


【解决方案1】:

首先,如果你将一个字符串传递给new Date()函数,它应该是这种格式new Date('MM-dd-yyyy')

所以前2位代表月份

后2位代表日期

接下来的 4 位数字代表年份

所以new Date("08-06-2020") 表示August 06, 2020 不是June 08, 2020

要获得某个日期的前一天,我们可以使用该时刻减去 1 天,如下所示

var date1 = new Date('08-06-2020'); // Aug 06, 2020
var date11 = moment(date1).subtract(1, 'days').format('DD-MM-YYYY');

console.log(`date1 >> ${date1}`);
console.log(`date11 >> ${date11}`);


var date2 = new Date('01-06-2020'); // Jan 06, 2020
var date22 = moment(date2).subtract(1, 'days').format('DD-MM-YYYY');

console.log(`date2 >> ${date2}`);
console.log(`date22 >> ${date22}`);

希望对你有帮助

【讨论】:

【解决方案2】:

由于上述答案之一解释并解决了 Date 构造函数的问题,因此此解决方案适用于使用 moment() 而不是 new Date() 的人?

var date = moment('08-06-2020', 'DD-MM-yyyy');

var previousDate = moment(date).subtract(1, 'days');  //derive the previous date
var nextDate = moment(date).add(1, 'days');   //derive the next date

console.log(previousDate.format('DD-MM-yyyy'));  //output => 07-06-2020
console.log(nextDate.format('DD-MM-yyyy'));  //output => 09-06-2020

? 阅读有关在 moment.js 中添加和减去日期的更多信息

https://momentjs.com/docs/#/manipulating/subtract/

https://momentjs.com/docs/#/manipulating/add/

? 阅读有关在 moment.js 中格式化日期的更多信息

https://momentjs.com/docs/#/parsing/string-format/

【讨论】:

    【解决方案3】:

    您可以使用 setDate 和 getDate 函数;

    var date1=new Date("08-06-2020");
    date1.setDate(date1.getDate() - 1);
    console.log("Prev Date="+date1.getDate());// Prev Date=08-05-2020
    

    希望它是您所要求的。 顺便说一句,在这种格式下,上一个日期将是 08-05-2020,因为默认是 mm-dd-yyyy

    【讨论】:

    【解决方案4】:

    您可以使用momentjs 实现此目的。使用 moment 构造函数解析输入字符串,然后使用 subtract() 从 moment 对象中减去指定的天数。结果可以根据您的要求进行格式化

    let arr = ["08-06-2020", "01-06-2020", "01-01-2021"];
    let prevDates = arr.map(item => {
      let momentItem = moment(item, "DD-MM-YYYY");
      let prevDay = momentItem.subtract(1, "days");
      return prevDay.format("DD-MM-YYYY");
    });
    console.log(prevDates);
    <script src="https://momentjs.com/downloads/moment.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      相关资源
      最近更新 更多