【问题标题】:Get next week's date of a certain day in JavaScript在 JavaScript 中获取某一天的下周日期
【发布时间】:2017-04-24 07:24:12
【问题描述】:

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

如果今天的日期是“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

任何帮助将不胜感激!

【问题讨论】:

标签: javascript


【解决方案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 &lt; now)那个双- 检查今天是否已经过了所需的时间,如果是,则增加一周。

【讨论】:

  • 快速评论来解释一下,这个结果
【解决方案2】:

你可以通过简单的复述轻松获得下周四。

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

【讨论】:

  • 这仅适用于今天是星期一,对吧?我认为这不是 OP 想要的
  • 它适用于一周中的每一天,就像我们一样 day.getDay()
【解决方案3】:

好的。因此,如果 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 点是一个神奇的时刻。在这方面,上述内容并不完全正确;如果我们目前在星期四,无论实际时间如何,它将把 theDate 设置为提前 7 天。无论如何,您可能仍然会明白这个想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-31
    • 2011-05-08
    • 2011-10-07
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多