JavaScript计算已知区间的时间差
JavaScript Calculate time difference in known intervals
我正在努力计算日期时间对象:(
我们从用户那里得到三个输入:
1. Start time of day
2. End time of day
3. Intervals between events (in minutes)
我的目标是按选定的时间间隔计算我每天从开始时间到结束时间有多少事件,并创建一个包含这些事件确切时间的数组.
到目前为止,我以这种方式获取数据:
StartTime
是一个日期时间对象。
EndTime
是一个日期时间对象。
//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
谢谢!!
这是一个可以满足您要求的函数。正如评论中所建议的,只需以毫秒为单位计算时间并递增,直到达到停止时间。
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" />
我正在努力计算日期时间对象:(
我们从用户那里得到三个输入:
1. Start time of day
2. End time of day
3. Intervals between events (in minutes)
我的目标是按选定的时间间隔计算我每天从开始时间到结束时间有多少事件,并创建一个包含这些事件确切时间的数组.
到目前为止,我以这种方式获取数据:
StartTime
是一个日期时间对象。
EndTime
是一个日期时间对象。
//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
谢谢!!
这是一个可以满足您要求的函数。正如评论中所建议的,只需以毫秒为单位计算时间并递增,直到达到停止时间。
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" />