2017-02-14 161 views
0

我使用的是moment.js來計算下週的開始日期和結束日期。但現在我已經因爲一些縮小問題而將其刪除。使用純javascript獲取下週的開始和結束日期

我能夠如下得到這個星期的開始和結束日期,

var today = new Date; 
var first = today.getDate() - today.getDay(); 
(this.fromDate = new Date(today.setDate(first))); 
(this.toDate = new Date(today.setDate(last))); 

如何尋找下週開始和結束日期?

+0

你可以用我的答案代碼到其他的問題嗎? https://stackoverflow.com/questions/42158971/how-to-find-the-dates-of-coming-saturday-and-sunday-from-todays-date-in-typescr – Calum

回答

0

算了筆7天,本週開始到獲得下一週的開始;爲了獲得本週末的結束時間,請在本週開始前添加6天。

var date = new Date; 
 
var nextWeekStart = date.getDate() - date.getDay() + 7; 
 
var nextWeekFrom = new Date(date.setDate(nextWeekStart)); 
 
var nextWeekEnd = date.getDate() - date.getDay() + 6; 
 
var nextWeekTo = new Date(date.setDate(nextWeekEnd)); 
 

 
console.log('nextWeekFrom: ' + nextWeekFrom.toString()) 
 
console.log('nextWeekTo : ' + nextWeekTo.toString())

+0

該代碼給出了下週末不正確的結果。 var nextWeekEnd = ...行應該在'var nextWeekFrom = ...'之後,因爲該行修改* date *。 – RobG

+0

@RobG你是對的。上次編輯後我搞砸了。再次感謝 – Jackowski

1

不是100%你之後,但如果你修改這一點,你就應該是什麼能弄清楚如何

function test() { 
    var today = new Date; 
    alert(getMonday(today)); 
} 
function getMonday(date) { 
    date.setHours((24*7)); 
    var day = date.getDay() || 7; 
    if(day !== 1) 
     date.setHours(-24 * (day - 1)); 
    return date; 
} 

剛纔編輯的答案,這應該讓你在下週一約會

+0

你不應該添加天添加由於夏令時的變化,並非所有日子的時間都是24小時。 – RobG

2

你可以使用getFullYear(),getMonth()getDate()方法來實現。

function getWeekBegin() { 
 
    var now = new Date(); 
 
    var next = new Date(now.getFullYear(), now.getMonth(), now.getDate()+(7 - now.getDay())); 
 
    return next; 
 
} 
 
var firstDay = getWeekBegin(); 
 
console.log("First day: "+firstDay); 
 
var lastDay=firstDay.setDate(firstDay.getDate() + 6); 
 
console.log("Last day: "+new Date(lastDay));

+1

lastDay不是日期類型 – Sajeetharan

+0

@RobG,我更新了我的答案。謝謝你的觀點。 –

0

以下簡化了代碼,並提供一些解釋。 setDate方法修改日期並返回新的時間值,因此它可用於修改日期並一次創建副本。

// Get current date 
 
var d = new Date(); 
 

 
// Set to next Sunday and copy 
 
var startOfWeek = new Date(d.setDate(d.getDate() + 7 - d.getDay())); 
 

 
// Set to the following Saturday 
 
d.setDate(d.getDate() + 6); 
 

 
console.log('Start of week: ' + startOfWeek.toString()); 
 
console.log('End of week : ' + d.toString()); 
 

 
// The following shows the dates formatted and in the host default language 
 
// Support for toLocaleString options may be lacking though 
 
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; 
 
console.log('Start of week: ' + startOfWeek.toLocaleString(undefined, options)); 
 
console.log('End of week : ' + d.toLocaleString(undefined, options));

相關問題