【问题标题】:Function that return me the previous day前一天返回我的功能
【发布时间】:2020-12-02 09:32:06
【问题描述】:

你能帮我解决这个问题吗?我试图制作一个接收Date 类型参数的函数,例如2020 年 11 月 12 日。我希望它在前一天返回。

function getPreviousDay(d) {
  var dateObj = new Date(d);
  var previousDay = dateObj.setDate(dateObj.getDate() - 1);
  return previousDay;
}

console.log(getPreviousDay(new Date())); //1606809601830

但是如你所见,函数返回:1606809601830,我不知道为什么。 谢谢各位!

【问题讨论】:

  • 这是一个日期,但作为时间戳,不是人类可读的日期。您需要将其格式化为一个。此外,您将new Date() 传递给您的函数,因此它会接收一个Date 对象,而您要做的第一件事就是将new Date(d) 传递给它,从而得到new Date( new Date() )

标签: javascript datetime date-manipulation


【解决方案1】:

一个简单的 ES6 单行代码是:

const getPreviousDay = d => d.setDate(d.getDate() - 1) && d

console.log(getPreviousDay(new Date())); 

此函数更改您传递给它的Date 对象的日期,并返回它。无需创建中介。

Typescript 版本(带有类型检查,以确保您始终将其传递给 Date 对象,而不是字符串):

const getPreviousDay = (d:Date): Date => d.setDate(d.getDate() - 1) && d

【讨论】:

    【解决方案2】:

    您不想返回Date.prototype.setDate() 的结果,它是以毫秒为单位的日期,您想返回变异的dateObj

    function getPreviousDay(d) {
      var dateObj = new Date(d);
      dateObj.setDate(dateObj.getDate() - 1);
      return dateObj ;
    }
    
    console.log(getPreviousDay(new Date()));

    【讨论】:

      【解决方案3】:

      此代码在昨天日期(1.12.2020)返回这样。

      function getPreviousDay(d) {
        var dateObj = new Date(d);
        dateObj.setDate(dateObj.getDate()-1);
        return dateObj.getDate() + '.' + (dateObj.getMonth()+1) + '.' + dateObj.getFullYear();
      }
      
      console.log(getPreviousDay(new Date())); 

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多