Дата последнего изменения: 10.11.2023
В js-библиотеке есть расширение core_date.js, позволяющее форматировать дату.
CJSCore::Init("date");
BX.date.format("формат", дата);
формат - полный аналог формата функции date, за исключением формата T и e (символьное название таймзоны). Также поддерживаются расширенные форматы функции FormatDate.
Если есть символы, которые не должны быть отформатированы, то необходимо эти символы оформить слешами.
BX.date.format("H:m:s \\m \\i\\s \\m\\o\\n\\t\\h")
Если формат начинается с символа ^
, то функция обрежет нули. Примеры:
15.04.12 13:00:00 => 15.04.12 13:00 00:01:00 => 00:01 4 may 00:00:00 => 4 may 01-01-12 00:00 => 01-01-12
дата - это либо timestamp в секундах (тип Number), либо объект класса Date. Иначе по умолчанию текущее время (new Date()). Примеры:
BX.date.format("d-m-Y H:i:s"); BX.date.format("j F Y H:i:s"); BX.date.format("^d-m-Y H:i:s"); BX.date.format("H:m:s \\m \\i\\s \\m\\o\\n\\t\\h"); BX.date.format("Hago | dago | sago | iago | mago | Yago", new Date(2007, 2, 1, 0, 0, 0)); BX.date.format("sago | iago", 1320271200);
Также как и FormatDate, BX.date.format может принимать массив форматов для вычисление вида "1 секунда назад", "2 минуты назад" и так далее.
var format = [ ["tommorow", "tommorow, H:i:s"], ["s" , "sago"], ["H", "Hago"], ["d", "dago"], ["m100", "mago"], ["m", "mago"], ["-", ""] ]; BX.date.format(format, new Date(2007, 2, 1, 0, 0, 0));
Массив format
состоит из элементов вида ["интервал формата", "формат"]
, где интервал формата определяет на каком интервале времени применится формат.
Массив format
обрабатывается последовательно до первого совпадения.
Интервал времени определяется между указанной датой (первый параметр в BX.format.date) и текущей датой.
|
* - где N - это любое положительное число.
Рассмотрим пример:
var format = [ ["-", "d.m.Y H:i:s"] ["s300" , "sago"], ["H", "Hago"], ["d", "dago"], ["m", "mago"] ]; BX.date.format(format, new Date(2007, 2, 2, 9, 58, 0), new Date(2007, 2, 2, 10, 0, 0)); //1 BX.date.format(format, new Date(2007, 2, 2, 0, 0, 0), new Date(2007, 2, 2, 10, 0, 0)); //2 BX.date.format(format, new Date(2007, 2, 1, 0, 0, 0), new Date(2007, 2, 2, 10, 0, 0)); //3 BX.date.format(format, new Date(2007, 2, 3, 0, 0, 0), new Date(2007, 2, 2, 10, 0, 0)); //4
Третий параметр в BX.date.format - это текущая дата (описание смотри ниже).
Для значения по умолчанию последним элементом можно указать пустой "интервал формата":
var format = [ ["s" , "sago"], ["H", "Hago"], ["d", "dago"], ["m", "mago"], ["", "d.m.Y H:i:s"] ]; BX.date.format(format, new Date(2007, 2, 1, 0, 0, 0));
BX.date.format("формат", дата, текущее время, utc);
текущая дата - дата (timestamp в секундах, либо объект класса Date), которая используется для вычислений типа "1 секунда назад", "2 года назад". Если не задано, по умолчанию new Date().
utc - дата в UTC. По умолчанию false. Если необходимо работать с датами в UTC.
time() = new Date() mktime(...) = new Date(...) gmmktime(...) = new Date(Date.UTC(...)) mktime(0,0,0, 1, 1, 1970) != 0 new Date(1970,0,1).getTime() != 0 gmmktime(0,0,0, 1, 1, 1970) == 0 new Date(Date.UTC(1970,0,1)).getTime() == 0 date("d.m.Y H:i:s") = BX.date.format("d.m.Y H:i:s") gmdate("d.m.Y H:i:s") = BX.date.format("d.m.Y H:i:s", null, null, true);
Функция конвертирует битрикс-формат даты в формат функции date. Форматы даты текущего сайта можно получить так:
BX.message("FORMAT_DATE"); BX.message("FORMAT_DATETIME");