【发布时间】:2016-08-26 16:58:45
【问题描述】:
问题:我需要将两个日期/时间戳之间的所有 15 分钟时隙数组(日期格式:2016-08-10 16:00:00)创建为 HH:mm 格式,其中分钟受到限制到 00,15,30,45。
例如:12:30 PM 到 2:30 PM 将 > 12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15
下面的代码可以运行,但它没有考虑开始时间段(它总是从“00”开始)。已调整代码以解决此问题,但现在它不会正确增加小时数。
function generateTimeSlots(s,e)
{ // create an array of timeslots (15 min interval) between 2 dates
var ckTimes = new Array();
var timeSlots = new Array();
var diff = Math.abs((new Date(e)) - (new Date(s)));
var duration = Math.floor((diff/1000)/60);
var sHour = (((s.split(' ')[1]).split(':'))[0]) * 1;
var ampm = (s.split(' '))[2];
// convert hour to 24 hour
if(ampm+'' == 'PM' ${AND} sHour != 12)
{
sHour = sHour + 12;
}
var hours = (duration / 60);
var slots = (hours * 4); // total 15 min slots
var chunk = ['00','15','30','45'] // the four 15 min slots in a hour
// Attempt to move starting position to the correct 15 min block
// Beforehand, it would always start at the '00' slot
// i.e. 12:30 pm to 1:30pm would return 12:00,12:15,12:30,12:45
var i = "";
var startMin = (((s.split(' ')[1]).split(':'))[1])
// note platform doesn't support indexOf
for (var z = 0; 4 > z; z++){
if (chunk[z].toString() == startMin.toString())
i = z;
}
slots += i;
for(i;slots > i;i++)
{
var quarter = (i % 4);
var sMin = chunk[quarter];
var slot = sHour+":"+sMin;
if(ampm+'' == 'AM' ${AND} 10 > sHour)
{
slot = "0"+slot;
}
timeSlots.push(slot)
if(hours > 1)
{
if(quarter == 3)
{
sHour++;
}
}
}
return timeSlots;
}
【问题讨论】:
-
那 "${AND}" 呢?你是在 php 中使用这个还是类似的?
-
使用Moment.js。
标签: javascript date datetime