Если требуется указать, как должен отображаться счетчик временного интервала (типа time_interval), то можно указать формат его отображения. Формат задаётся строкой с подстановками, вида:
<counter name="time_interval" type="time_interval" format="{@H}:{@min}:{@s}"/>
Возможные варианты мер времени(указано минимальное и полное название меры):
- mil (millis) - миллисекунды
- s (seconds) - секунды
- min (minutes) -
- h (hours) - часы
- d (days) - дни (каждый день считается равным 24 часам)
- w (weeks) - недели (равна 7 дней)
- mo (months) - месяцы (равен 30 дней)
- y (years) - года (равен 365 дней, равен 12 месяцев)
В подстановке можно указывать и минимальное, и максимальное имя меры.
Заметьте, что временной интервал не привязан к календарю, а потому не учитывает ни переходы на летнее\зимнее время, ни разное число дней в разных месяцах, ни високосные года. Точное представление временного интервала задаётся использованием часов, минут, секунд и миллисекунд, остальные меры приблизительные.
Если в подстановке мера указана заглавными буквами, то в неё будет подставлено значение временного интервала целиком в этой мере. Например, {@H} - количество целых часов в интервале, {@MO} - количество целых месяцев в интервале (приблизительно, но с учетом, что в году 12 месяцев).
Если в подстановке мера указана строчными буквами, то вместо неё будет подставлено значение интервала в этой мере, сверх его значения в более старшей мере. Например, {@min} отобразит, сколько в интервале целых минут сверх целых часов. {@mo} - сколько в интервале месяцев сверх целых годов.
Для каждой меры установлены следующие более старшие меры:
- millis > seconds
- seconds > minutes
- minutes > hours
- hours > days
- days > years
- weeks > years
- months > years
Если установленное по умолчанию старшинство мер не подходит, то можно явно его установить. Например, {@weeks>months} означает число недель сверх целых месяцев, {@days>weeks>years} означает число дней после целого числа недель, прошедших с начала года.
Примечание: Месяцы обрабатываются несколько особенно. Дело в том, что запись {@months} всегда эквивалентна {@months>years}. То есть, несмотря на то, что месяц считается равным 30 дней, в году ровно 12 месяцев. То есть, в 10 годах 120 месяцев, а не 121 (то есть 365*10/30). Такие сложности возникают потому, что временной интервал не привязан к календарю.
Примеры:
{@H}:{@min}:{@s} - часы:минуты:секунды
{@D}д,{@h}:{@min}:{@s} - дни,часы:минуты:секунды
{@Y} лет {@mo} мес. - лет, месяцев