根据今天的日期(新的Date()),我想用JavaScript获取下一个星期四的晚上7点的日期。例如:

如果今天的日期是“Mon Apr 24 2017 13:00:00 GMT”,我正在寻找结果:

Thu Apr 27 2017 19:00:00 GMT

但是,如果今天的日期是“2017年4月27日星期四21:00(格林尼治标准时间)”(星期四,但在晚上7点之后),我在寻找结果:
Thu May 4 2017 19:00:00 GMT

任何帮助将非常感激!

最佳答案

也许像下面这样(如果您想要更具体的时间而不只是小时和分钟,可以扩展它):

// 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),它仔细检查今天是否已经过了所需的时间,如果是,则增加一个星期。

关于javascript - 在JavaScript中获取下一天的某天的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43582087/

10-11 13:46