[英]How to check if javascript date is from a specified week ago?
我試圖做一個可以檢查給定日期是否在指定的一周前的函數。
例如,如果輸入為<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());
如果要確定日期是否在特定的一周內,則需要:
由於您的星期是星期日至星期六,因此您可以從以下日期獲得一周的第一天:
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/
我們經常使用它,它是一個很棒的庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.