Problem: Ich muss ein Array aller 15-Minuten-Zeitfenster zwischen zwei Datum/Uhrzeit-Stempeln (Datumsformat: 2016-08-10 16:00:00) in ein HH erstellen: mm Format, wobei die Minuten auf 00,15,30,45 beschränkt sind.15 Minuten Intervall zwischen zwei Daten Javascript
Beispiel: 12:30 PM zu 2:30 PM wäre> 12: 30,12: 45,13: 00,13: 15,13: 30,13: 45,14: 00,14: 15
Der folgende Code funktionierte, aber er berücksichtigte nicht den Startzeitschlitz (er begann immer bei '00'). Der Code wurde angepasst, um es zu berücksichtigen, aber jetzt wird die Stunde nicht korrekt erhöht.
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;
}
was ist mit dem "$ {AND}"? Benutzt du das in PHP oder ähnlichem? – Karan
Verwenden Sie [Moment.js] (http://momentjs.com/). – ManoDestra