Для нашей системы цифровых вывесок я бы хотел показать, как долго будет отправляться следующий автобус.Я построил массив, который хранит все время, и успешно (возможно, не элегантно или неэффективно) получил его, чтобы изменить все это, чтобы показать, сколько времени осталось (положительного или отрицательного) до каждого перечисленного вылета.
Iнужно подтолкнуть в правильном направлении, чтобы определить, какая шина будет следующей в зависимости от текущего времени.Если через 7 минут есть автобус, мне нужно только отобразить этот, а не следующий, который отправляется через 20 минут.
Я думал, возможно, для цикла , который смотрит намассив оставшихся времен и останавливается, когда в первый раз он достигает положительного значения.Я обеспокоен тем, что это может вызвать проблемы, которые я не рассматриваю.
Любая помощь будет принята с благодарностью.
ОБНОВЛЕНИЕ: К сожалению, все предоставленные решения приводили к ошибкам в нашей системе вывесок.Я подозреваю, что он работает на какой-то ограниченной версии Javascript, но это вне меня.Тем не менее, различные решения были чрезвычайно полезны только для того, чтобы заставить меня задуматься о другом подходе.Я думаю, что я наконец пришел на один, поскольку это, кажется, работает.Я собираюсь позволить ему пройти по выходным и проверить это в понедельник.Еще раз спасибо!
var shuttleOrange = ["09:01", "09:37", "10:03", "10:29", "10:55", "11:21", "11:47", "12:13", "12:39", "13:05", "13:31", "13:57", "14:23", "14:49", "15:25", "15:51", "16:17", "16:57", "17:37", "18:17"];
var hFirst = shuttleOrange[0].slice(0,2);
var mFirst = shuttleOrange[0].slice(3,5);
var hLast = shuttleOrange[shuttleOrange.length-1].slice(0,2);
var mLast = shuttleOrange[shuttleOrange.length-1].slice(3,5);
var theTime = new Date();
var runFirst = new Date();
var runLast = new Date();
runFirst.setHours(hFirst,mFirst,0);
runLast.setHours(hLast,mLast,0);
if ((runFirst - theTime) >= (30*60*1000)) {
return "The first Orange Shuttle will depart PCN at " + shuttleOrange[0] + "."
} else if (theTime >= runLast) {
return "Orange Shuttle Service has ended for the day."
} else {
for(var i=0, l=shuttleOrange.length; i<l; i++)
{
var h = shuttleOrange[i].slice(0,2);
var m = shuttleOrange[i].slice(3,5);
var departPCN = new Date();
departPCN.setHours(h,m,0);
shuttleOrange[i] = departPCN;
}
for(var i=shuttleOrange.length-1; i--;)
{
//var theTime = new Date();
if (shuttleOrange[i] < theTime) shuttleOrange.splice(i,1)
}
var timeRem = Math.floor((shuttleOrange[0] - theTime)/1000/60);
if (timeRem >= 2) {
return "Departing in " + timeRem + " minutes."
} else if (timeRem > 0 && timeRem < 2) {
return "Departing in " + timeRem + " minute."
} else {
return "Departing now."
}
}