2017-04-24 67 views
4

根據今天的日期(新日期()),我希望在下午7點的JavaScript中獲得下一個星期四的日期。例如:在JavaScript中獲取某一天的下週日期

如果今天的日期是「星期一2017年4月24日13:00:00 GMT」我要尋找的結果:

Thu Apr 27 2017 19:00:00 GMT 

但是,如果今天的日期是「星期四2017年4月27日21: 00:00 GMT「(週四,但是過去7點)我在尋找結果:

Thu May 4 2017 19:00:00 GMT 

任何幫助將不勝感激!

+0

你試過用momentjs https://momentjs.com/ – user93

+0

不幸的是,我只能在這個項目上使用vanilla JavaScript。 – ericalli

+0

var date_next_week = new Date(current_date.getTime()+ 7 * 24 * 60 * 60 * 1000); 這是解決問題的一種方法。 –

回答

1

也許類似於以下內容(如果您想要更具體的時間剛剛小時和分鐘):

// day: 0=Sunday, 1=Monday...4=Thursday... 
 
function nextDayAndTime(dayOfWeek, hour, minute) { 
 
    var now = new Date() 
 
    var result = new Date(
 
       now.getFullYear(), 
 
       now.getMonth(), 
 
       now.getDate() + (7 + dayOfWeek - now.getDay()) % 7, 
 
       hour, 
 
       minute) 
 

 
    if (result < now) 
 
    result.setDate(result.getDate() + 7) 
 
    
 
    return result 
 
} 
 

 
console.log(nextDayAndTime(4, 19, 0).toString()) // Thursday 7pm 
 
console.log(nextDayAndTime(0, 19, 0).toString()) // Sunday 7pm 
 
console.log(nextDayAndTime(1, 19, 0).toString()) // Monday 7pm (later today as of now in my timezone) 
 
console.log(nextDayAndTime(1, 7, 30).toString()) // Monday 7:30am (next week, in my timezone) 
 
console.log(nextDayAndTime(2, 19, 0).toString()) // Tuesday 7pm

兩個關鍵位是now.getDate() + (7 + dayOfWeek - now.getDay()) % 7,該數字出下週四(或指定的一天)從今日開始(這是% 7做什麼,和那麼if (result < now)會仔細檢查所需時間是否已經過去,如果是這樣,則會增加一週。

1

好的。所以如果moment.js不可用,則以毫秒爲單位工作。

var d = new Date(); 
var n = d.getTime(); // n == time in milliseconds since 1st Jan 1970 
var weekday = d.GetDay() // 0...6 ; 0 == Sunday, 6 = Saturday, 4 = Thursday 
var numDaysToNextThursday = weekday >= 4 ? 7 - (weekday-4) : 4 - weekday; 
var nextThursday_msecs = n + numDaysToNextThursday * 24 * 60 * 60 * 1000; 
var theDate = new Date(nextThursday_msecs); // this is the date 

編輯:我可以看到週四的7PM是神奇的時刻。以上在這方面並不完全正確;如果我們目前在星期四,無論實際時間如何,它都會將日期設置爲提前7天。無論如何,你可能仍然會明白。

0

通過簡單的敘述,您可以輕鬆獲得下一個星期四。

7 - 在一個星期 計算週四的指數 - - 你需要減去一個星期的當日指數以獲得週四

var day = new Date(); 
 

 
var days = 7 - day.getDay() + 4; 
 

 
var nextDay = new Date(day.setDate(day.getDate() + days)); 
 

 

 
console.log(nextDay.toString());

在一個星期 4天數

codepen查看其他日子https://codepen.io/kejt/pen/LyRGBX?editors=1111

+0

這隻適用於今天是星期一的時候,對吧?我不認爲這就是OP想要的 –

+0

它在一週的每一天工作,因爲我們做了'day.getDay()' – Kejt

相關問題