【发布时间】:2018-12-06 22:06:07
【问题描述】:
我正在我的应用程序中构建一个功能,允许将事件安排到未来。 IE:该活动每周三下午 6:30 举行。我需要根据今天的当前日期向用户显示下一个星期三的时间。
如果今天是 2018 年 12 月 6 日星期四,则需要向用户显示下一个事件是“2018 年 12 月 12 日星期三下午 6:30”
如果今天是“2019 年 1 月 8 日星期二”,则需要向用户显示下一个事件是“2019 年 1 月 9 日星期三下午 6:30”
事件的原始开始日期是在我的数据库中捕获的,作为正在进行的系列的第一天。 IE:2018 年 9 月 10 日,星期三。我正在使用该开始日期来尝试计算每个下周三。
function nextEvent(cEvent) {
var startDate = cEvent.ceDate+ ", " +cEvent.ceTime ;
var ceDate = new Date(startDate) ;
var curDate = new Date() ;
var timeDiff = Math.abs(curDate.getTime() - ceDate.getTime()) ;
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)) ;
var addDays = Math.ceil(diffDays / 7) * 7 ;
var futureDate = ceDate.setDate(ceDate.getDate() + addDays) ;
var futureEvent = ceDate.format('D, M d, Y @ g:i a') ;
return futureEvent ;
}
}
// this date object START event is Wed Sept 10, 2018
var dObject = {"ceDate":"2018-09-10","ceTime":"18:30:00"}
var nextDate = nextEvent(dObject) ;
我正在循环浏览几个事件,所有事件都使用不同的开始日期(即:ceDate),而 NEXT 事件在第二天显示错误。上面的示例(在 dObject 中硬编码)显示 Mon Dec 10, 2018,而它应该显示 Wed Dec 12, 2018。
同样,如果今天是星期三下午 6 点,则下一个事件仍需要在下午 6 点 30 分显示为今天。活动至少持续 2 小时......所以理想情况下,我还想弄清楚如何展示如下内容:Next Event: happening now til 8:30pm
【问题讨论】:
-
加减天数见How can I add 1 day to current date?你不应该加减毫秒。
标签: javascript date datetime date-arithmetic