2010-07-18 119 views
4

有人可以引導我在JavaScript的日期範圍?如何在javascript中計算周和月的日期範圍?

我想從今天的日期計算一個星期和一個月的日期範圍;也就是說,如果今天是「2010年7月18日」,則本週的範圍應該是「11/07/2010 - 8/07/2010」 ,並且本月的範圍應該是「01/07/2010 - 18/07/07/2010" 。

感謝您提前給予指導。

回答

1

我會建議你看看優秀的datejs庫,它有許多有用的功能來操縱日期。

5

試試這個:

var now = new Date(); 
var nextWeek = new Date(new Date(now).setDate(now.getDate() + 7)); 
var nextMonth = new Date(new Date(now).setMonth(now.getMonth() + 1)); 
+0

我不確定如果說今天的日期是25日是否可以添加這樣的日期。它可能適用於某些瀏覽器,但可能適用於其他瀏覽器。 – Anurag 2010-07-18 09:21:25

+0

根據規範和我見過的所有實現,Date.prototype.set *函數像這樣安全地溢出。例如ECMA-262 v.3(15.9.5.36,p.128)中的'setDate'基本上是說將天數轉成幾秒,然後將原始日期調整該秒數......所以如果有本月會比當前月份更多,該月將翻轉... – 2010-07-18 09:45:32

+0

感謝@no,我錯誤地認爲溢出不會在每個瀏覽器上正確處理,並且始終採用手動時間戳轉換,所以這是很高興知道。 – Anurag 2010-07-18 16:53:22

1

這裏是香草JS的功能,將採取日期(或空)作爲輸入,並返回與該周的開始和結束日期的對象(假設星期一是一週的第一天:))

function rangeWeek (dateStr) { 
    if (!dateStr) dateStr = new Date().getTime(); 
    var dt = new Date(dateStr); 
    dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate()); 
    dt = new Date(dt.getTime() - (dt.getDay() > 0 ? (dt.getDay() - 1) * 1000 * 60 * 60 * 24 : 6 * 1000 * 60 * 60 * 24)); 
    return { start: dt, end: new Date(dt.getTime() + 1000 * 60 * 60 * 24 * 7 - 1) }; 
} 

console.log(rangeWeek()); 
console.log(rangeWeek('2013/9/1')); 

您可以相應地更改週日到週六。

+0

我知道這個帖子是老:)但謝謝你幫助我,出。這工作完美和預期。我很高興我不必自己拿出那個。 – 2016-02-08 23:00:27

+0

我該如何循環以獲得從現在開始到本月結束的一週? – MizAkita 2016-03-10 01:59:05

相關問題