如何检查javascript日期是否从指定的一周以前

How to check if javascript date is from a specified week ago?

本文关键字:一周 是否 日期 何检查 检查 javascript      更新时间:2023-09-26

我想做一个函数,可以检查一个给定的日期是否在一个指定的星期前。

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

星期是太阳-星期六。

    this.isOnSpecifiedWeekAgo = function(weeks_ago, inputDate) {

        return false;
    };

但是我不想使用任何库,而且我不确定如何更改日期对象的星期。有人知道怎么开始吗?

谢谢

如果你想找出一个星期前的日期,你可以简单地从当前日期减去7天:

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

如果你想知道某个日期是否在特定的星期,你需要:

  1. 计算出当周的开始日期
  2. 计算出该星期的结束日期
  3. 查看日期是否在开始或之后,在结束或之前

由于你的星期是星期日到星期六,你可以得到一周的第一天:

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

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

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

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

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