Как округлить минуты отметки времени с шагом 15? - PullRequest
2 голосов
/ 15 июня 2011

Я создаю приложение для записи, когда у моей кошки случается приступ астмы.Меня не интересует точное время, поскольку обзор в промежуток времени в 15 минут легче рассмотреть (например, округление 9:38 должно быть записано как 9:45).

Я искал UDF на cflib.org для этого, но не смог его найти.Я возился с функцией округления CF, но я не заставляю ее делать то, что я хочу.

Любой совет?

Ответы [ 4 ]

5 голосов
/ 15 июня 2011

Это может быть сделано с немного большей полировкой (например, проверка типа данных), но потребуется значение времени и вернет его с округлением до ближайшего 15-минутного приращения.

<cfscript>
function roundTo15(theTime) {
    var roundedMinutes = round(minute(theTime) / 15 ) * 15;
    var newHour=hour(theTime);
    if (roundedMinutes EQ 60) {
        newHour=newHour + 1;
        roundedMinutes=0;
    }
    return timeFormat(createTime(newHour,roundedMinutes,0),"HH:mm");
}
</cfscript>
0 голосов
/ 18 июня 2011

Если вы используете предложение Генри для сохранения точного времени в базе данных (принцип: если нет затрат, предпочитаете сохранять данные), то вы можете просто использовать функцию округления Эверетта, когда вы отображаете данные для пользователя.

0 голосов
/ 15 июня 2011

Мне нравится Ответ Аль Эверетта , или, альтернативно, сохраните фактическое время, чтобы сохранить наиболее точное время, затем используйте запрос запроса в представлении и используйте between: 00 and: 15, чтобы показать время в 15 минут.

0 голосов
/ 15 июня 2011

Я не знаком с форматом отметки времени здесь, но обычно, когда я хочу округлить, я делаю что-то вроде floor ((val + increment / 2) / increment) * increment

...