Дата раунда до ближайшего 15-минутного интервала в Flex - PullRequest
1 голос
/ 18 сентября 2009

Я создаю элемент управления, позволяющий мне установить время встречи, и я хотел бы, чтобы он использовал по умолчанию текущее время, округленное до ближайшего 15-минутного интервала. Таким образом, если сейчас 6:07, то в качестве времени начала будет 6:15.

Кто-нибудь знает, как это можно сделать, или наткнулся на фрагмент кода, который поставил бы меня на правильный путь?

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

Попробуйте это

var date:Date = new Date();
var min:Number = date.minutes;
var h:Number = date.hours;
min = min + (15 - min % 15);
h += min / 60;
min = min % 60;
date.hours = h;
date.minutes = min;
trace(date.toTimeString());
1 голос
/ 12 декабря 2009

Я обнаружил, что с ответом Амаргоша это не совсем правильно. Пример: округление 7:01 до 7:15, а не 7:00. Он также не будет обрабатывать изменение дат (например, округление 23:50 до следующего дня) и т. Д.

Это будет делать то, что вы хотите, обрабатывая даже меняющиеся дни, месяцы и годы, а математика немного проще:

protected function roundTimeToMinutes( date:Date, interval:int ):Date
{
    var time:Number=date.getTime();
    var roundNumerator=60000*interval; //there are 60000 milliseconds in a minute
    var newTime:Number=( Math.round( time / roundNumerator ) * roundNumerator );
    date.setTime(newTime);
    return date;
}
...