如何检查javascript日期是否来自指定的一周前?

时间:2016-10-31 20:49:36

标签: javascript date

我正在尝试创建一个函数,可以检查给定日期是否在指定的一周之前。

例如,如果输入为<1, date object>,则它会询问给定日期是否来自上周。如果输入为<2, date object>,则它会询问给定日期是否来自2周前等等。(0表示当前周)。

<周>周是周日。

    this.isOnSpecifiedWeekAgo = function(weeks_ago, inputDate) {



        return false;
    };

但我不想使用任何库,而且我也不确定如何更改日期对象的周。有谁知道如何开始?

由于

2 个答案:

答案 0 :(得分:2)

如果您想查找一周前的日期,您可以简单地从当前日期减去7天:

&#13;
&#13;
var weekAgo = new Date();
weekAgo.setDate(weekAgo.getDate() - 7);
console.log(weekAgo.toLocaleString());
&#13;
&#13;
&#13;

如果您想知道某个日期是否在特定的一周内,您需要:

  1. 计算该周的开始日期
  2. 计算该周的结束日期
  3. 查看日期是在开始时或之后以及结束时还是之前
  4. 由于您的周数是周日至周六,因此您可以从以下地点获得一周的第一天:

    &#13;
    &#13;
    var weekStart = new Date();
    weekStart.setDate(weekStart.getDate() - weekStart.getDay());
    console.log(weekStart.toLocaleString());
    &#13;
    &#13;
    &#13;

    时间应归零,然后创建7天后的新日期。这将是下一个星期日开始时的午夜,这与下周六结束时的午夜相同。所以函数可能看起来像:

    &#13;
    &#13;
    function wasWeeksAgo(weeksAgo, date) {
      // Create a date
      var weekStart = new Date();
      // Set time to 00:00:00
      weekStart.setHours(0,0,0,0);
      // Set to previous Sunday
      weekStart.setDate(weekStart.getDate() - weekStart.getDay());
      // Set to Sunday on weeksAgo
      weekStart.setDate(weekStart.getDate() - 7*weeksAgo)
      // Create date for following Saturday at 24:00:00
      var weekEnd = new Date(+weekStart);
      weekEnd.setDate(weekEnd.getDate() + 7);
      // See if date is in that week
      return date >= weekStart && date <= weekEnd;
    }
    
     // Test if dates in week before today (1 Nov 2016)
     // 1 Oct            24 Oct
    [new Date(2016,9,1), new Date(2016,9,24)].forEach(function(date) {
      console.log(date.toLocaleString() + ' ' + wasWeeksAgo(1, date));
    });
    &#13;
    &#13;
    &#13;

答案 1 :(得分:0)

使用moment.js http://momentjs.com/docs/#/manipulating/subtract/

我们经常使用它,它是一个很棒的库。