我正在努力计算日期时间对象:(
我们从用户那里得到三个输入:
1. Start time of day
2. End time of day
3. Intervals between events (in minutes)
我的目标是计算每天从开始时间到结束时间按所选间隔的事件数量,并创建一个包含这些事件的确切时间的数组。
到目前为止,我以这种方式获取数据:
StartTime
是一个Datetime对象。
EndTime
是一个Datetime对象。
//Get start time
var HourOfStart = StartTime.getHours();
var MinuteOfStart = StartTime.getMinutes();
//Get end time
var HourOfEnd = EndTime.getHours();
var MinuteOfEnd = EndTime.getMinutes();
在计算出一小时内有多少事件的差异并试图限制第一个和最后一个事件之后,我意识到我必须做错事(数学不是我的强项)。转换为unix时间戳让我感到困惑,因为事件不是在一个圆形小时开始。
简而言之,如果用户输入:
Start time: 10:15
End time: 12:30
Interval: 15 minutes
我需要获得以下一系列事件时间:
10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15
谢谢!
答案 0 :(得分:1)
这是一个应该做你想要的功能。正如评论中所建议的那样,只需计算时间(以毫秒为单位)并递增,直到达到停止时间为止。
function calculate() {
var a = [];
var startValue = document.getElementById("startTime").value;
var endValue = document.getElementById("endTime").value;
var intervalValue = document.getElementById("interval").value;
var startDate = new Date("1/1/2015 " + startValue);
var endDate = new Date("1/1/2015 " + endValue);
var offset = intervalValue * 1000 * 60;
do {
startDate = new Date(startDate.getTime() + offset);
if (startDate < endDate)
a.push(startDate);
} while(startDate < endDate);
console.log(a);
}
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<label for="startTime">Start Time</label>
<input id="startTime" value="10:15" />
<br/>
<label for="endTime">End Time</label>
<input id="endTime" value="12:30" />
<br/>
<label for="interval">Interval</label>
<input id="interval" value="15" />
<br/>
<input type="button" onclick="calculate()" value="Calculate" />