簡體   English   中英

獲取JavaScript中某一天的下周日期

[英]Get next week's date of a certain day in JavaScript

根據今天的日期(新的日期()),我想在javascript中獲取下周四晚上7點的日期。 例如:

如果今天的日期是“2017年4月24日13:00:00 GMT”,我正在尋找結果:

Thu Apr 27 2017 19:00:00 GMT

但是,如果今天的日期是“2017年4月27日星期四21:00:00格林尼治標准時間”(星期四,但是晚上7點),我正在尋找結果:

Thu May 4 2017 19:00:00 GMT

任何幫助將非常感激!

好的。 因此,如果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

編輯:我可以看到星期四晚上7點是神奇的時刻。 在這方面,上述情況並不完全正確; 如果我們目前在星期四,無論實際時間如何,它都會將日期提前7天。 無論如何,你可能仍會得到這個想法。

也許類似下面的內容(如果你想要比一小時和一分鍾更具體的時間,你可以擴展它):

 // 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)重復檢查所需時間是否已經過去,如果是這樣,則增加一周。

您可以通過簡單的重新計算輕松獲得下一個星期四。

7 - 一周中的天數4 - 一周中星期四的指數計算 - 你需要減去星期幾當天的指數以獲得星期四

 var day = new Date(); var days = 7 - day.getDay() + 4; var nextDay = new Date(day.setDate(day.getDate() + days)); console.log(nextDay.toString()); 

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM