JavaScript разделил время на куски - PullRequest
2 голосов
/ 09 августа 2011

Как я могу разделить время каждые X минут, если я знаю время начала и время окончания. Так, например, если мое время начала 13:00, а время окончания: 15:00 и разбиение его каждые 30 минут, то я хотел бы получить массив, содержащий:

13:00 - 13:30
14:00 - 14:30
14:30 - 15:00

Ответы [ 3 ]

1 голос
/ 09 августа 2011
13:00 - 13:30
13:30 - 14:00
14:00 - 14:30
14:30 - 15:00

увидеть его в действии

var makeTimeIntervals = function (startTime, endTime, increment) {
    startTime = startTime.toString().split(':');
    endTime = endTime.toString().split(':');
    increment = parseInt(increment, 10);

    var pad = function (n) { return (n < 10) ? '0' + n.toString() : n; },
        startHr = parseInt(startTime[0], 10),
        startMin = parseInt(startTime[1], 10),
        endHr = parseInt(endTime[0], 10),
        endMin = parseInt(endTime[1], 10),
        currentHr = startHr,
        currentMin = startMin,
        previous = currentHr + ':' + pad(currentMin),
        current = '',
        r = [];

    do {
        currentMin += increment;
        if ((currentMin % 60) === 0 || currentMin > 60) {
            currentMin = (currentMin === 60) ? 0 : currentMin - 60;
            currentHr += 1;
        }
        current = currentHr + ':' + pad(currentMin);
        r.push(previous + ' - ' + current);
        previous = current;
  } while (currentHr !== endHr);

    return r;
};

var a = makeTimeIntervals('13:00', '15:00', 30);

for (var i in a) if (a.hasOwnProperty(i)) { document.body.innerHTML += a[i] + '<br />'; }
1 голос
/ 09 августа 2011

Вы можете использовать datejs и его add метод для добавления минут к вашему объекту Date. Метод compareTo может использоваться для проверки того, что вы все еще находитесь в соответствующем диапазоне.

Если вы не хотите использовать внешнюю библиотеку, вы можете обратиться к w3schools .

//Set minutes
var myDate=new Date();
myDate.setMinutes(myDate.getMinutes()+30);

//Compare two dates.
var x=new Date();
x.setFullYear(2100,0,14);
var today = new Date();
if (x>today)
  {
  alert("Today is before 14th January 2100");
  }
else
  {
  alert("Today is after 14th January 2100");
  }
0 голосов
/ 09 августа 2011

хорошо, что разрушает все: P ... о хорошо ... для этого, кто хочет сделать это для строк:

function getIntervals(startString,endString,intervalString) {
var start = startString.split(":");
var end = endString.split(":");
var interval = intervalString.split(":");
startInMinutes = start[0]*60+start[1]*1;
endInMinutes = end[0]*60+end[1]*1;
intervalInMinutes = interval[0]*60+interval[1]*1;
var times = [];
var intervalsOfTime = [];

for(var i = startInMinutes; i <= endInMinutes; i+=intervalInMinutes) {
  var hour = Math.floor(i/60) + "";
  var minute = i%60 + "";
  minute = (minute.length < 2) ? "0" + minute : minute;
  hour = (hour.length < 2) ? "0" + hour : hour;
  times.push( hour + ":" + minute);
}


for(var i = 0; i < times.length-1; i++)
  intervalsOfTime.push(times[i] + " - " + times[i+1])

return intervalsOfTime;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...