1. Вывод дат в шаблонах
По умолчанию формат отображения дат и времени внутри Cotonti уже настроен. В большинстве случаев этого будет достаточно. Тем не менее, у вас есть возможность изменить формат вывода. Сделать это можно двумя способами:
- настроить формат вывода конкретного элемента в шаблоне;
- настроить (изменить) формат отображения глобально для всей системы.
Рассмотрим сначала первый вариант — вам необходимо изменить формат вывода даты в определенном [месте] шаблоне.
Как правило все метки даты-времени внутри системы храняться в формате UNIX-времени (по сути счетчик количества секунд прошедших с 1 января 1970 года). Это удобный для внутреннего хранения и сравнения формат, который позволяет быстро и удобно вывести дату в нужном, человеко-читаемом формате. Для конвертирования такоей метки даты-времени в читаемый формат в PHP существует функция date(), однако она не учитывает язык конечного пользователя.
Для решения этой проблемы в Cotonti есть функция «обертка» cot_date()
. Перейдем теперь к примеру. Предположим мы имеем какой-либо тег содержащий метку времени, например — PAGE_ROW_DATE_STAMP. Используем cot_date()
как обратный вызов (из шаблона):
{PAGE_ROW_DATE_STAMP|cot_date('d-m-Y', $this)}
Передаем значение PAGE_ROW_DATE_STAMP в функцию и предполагаем вывод в формате `d-m-Y` (для понимания сокращений в формате смотри описание функции date()
).
Замечание: Функция принимает 3 параметра: первый (обязательный параметр) задает строку формата, второй — метку времени, третий — использовать ли временную зону пользователя.
Кроме возможности указать формат в ручную, в системе есть ряд предопределенных заранее форматов. Эти форматы определены на уровне системных языковых файлов (main.*.lang.php) и поэтому могут учитывать некоторые национальные особенности отображания дат для того или иного языка. Хранятся эти определения в массиве $Ldt. При проектировании своих расширений рекомендуется использовать именно эти готовые форматы. Например:
{PAGE_ROW_DATE_STAMP|cot_date('date_full', $this)}
Ниже приведен список всех предопределенных форматов (примеры даны для руcского RU языкового файла):
Name | Format | Example |
---|---|---|
date_full | d.m.Y | 13.02.2009 |
date_medium | m.Y | 02.2009 |
date_short | d.m | 13.02 |
date_text | d F Y | 13 февраля 2009 |
date_fulltext | l, d F Y | Пятница, 13 февраля 2009 |
time_full | H:i:s | 23:31:30 |
time_medium | G:i | 23:31 |
time_short | i:s | 31:30 |
time_text | g:i A | 11:31 PM |
time_fulltext | g:i:s A | 11:31:30 PM |
datetime_full | d.m.Y H:i:s | 13.02.2009 23:31:30 |
datetime_medium | d.m.Y H:i | 13.02.2009 23:31 |
datetime_short | d.m H:i | 13.02 23:31 |
datetime_text | d F Y H:i | 13 февраля 2009 23:31 |
datetime_fulltext | l, d F Y H:i | Пятница, 13 февраля 2009 23:31 |
week_full | o-\WW | 2009-W07 * |
week_medium | \WW | W07 |
week_short | \WW-N | W07-5 |
week_text | \WW, l | W07, Пятница |
week_fulltext | o-\WW, l | 2009-W07, Пятница |
* если номер недели (ISO) относится к предыдущему или следующему году — будет отображен соотв. год.
дополнительно https://www.cy-pr.com/tools/time/
еще примеры
{PHP.pag.page_date|cot_date('l jS F Y h:i:s A', $this)} {PHP.pag.pcot_updated|cot_date('datetime_full', $this)} {PHP.item.item_updated|cot_build_timeago()} {PAGE_DATE_STAMP|cot_date('c', $this)} {PAGE_DATE_STAMP|cot_date('l jS F Y h:i:s A', $this)} {PAGE_DATE_STAMP|cot_date('xxx', $this)}
«XXX» берем отсюда
Возвращает строку даты, преобразованной согласно переданному формату.
Список параметров
object
-
Только для процедурного стиля: объект DateTime, возвращаемый date_create().
format
-
Шаблон результирующей строки (string) с датой. Смотрите параметры форматирования ниже. Также существует несколько предопределённых констант даты/времени, которые могут быть использованы вместо этих параметров. Например:
DATE_RSS
заменяет шаблон'D, d M Y H:i:s'
.В параметре format
распознаются следующие символыСимвол в строке format
Описание Пример возвращаемого значения День — — d
День месяца, 2 цифры с ведущим нулём от 01
до31
D
Текстовое представление дня недели, 3 символа от Mon
доSun
j
День месяца без ведущего нуля от 1
до31
l
(строчная ‘L’)Полное наименование дня недели от Sunday
доSaturday
N
Порядковый номер дня недели в соответствии со стандартом ISO 8601 от 1
(понедельник) до7
(воскресенье)S
Английский суффикс порядкового числительного дня месяца, 2 символа st
,nd
,rd
илиth
. Применяется совместно сj
w
Порядковый номер дня недели от 0
(воскресенье) до6
(суббота)z
Порядковый номер дня в году (начиная с 0) От 0
до365
Неделя — — W
Порядковый номер недели года в соответствии со стандартом ISO 8601; недели начинаются с понедельника Например: 42
(42-я неделя года)Месяц — — F
Полное наименование месяца, например, January или March от January
доDecember
m
Порядковый номер месяца с ведущим нулём от 01
до12
M
Сокращённое наименование месяца, 3 символа от Jan
доDec
n
Порядковый номер месяца без ведущего нуля от 1
до12
t
Количество дней в указанном месяце от 28
до31
Год — — L
Признак високосного года 1
, если год високосный, иначе0
.o
Номер года в соответствии со стандартом ISO 8601. Имеет то же значение, что и Y
, кроме случая, когда номер недели ISO (W
) принадлежит предыдущему или следующему году; тогда будет использован год этой недели.Примеры: 1999
или2003
X
Расширенное полное числовое представление года, не менее 4 цифр, с -
для годов до нашей эры и+
для годов нашей эры.Примеры: -0055
,+0787
,+1999
,+10191
x
Расширенное полное числовое представление, если требуется или стандартное полное числовое представление, если возможно (например, Y
). Не менее четырёх цифр. Для годов до нашей эры указан префикс-
. У годов после (и включая)10000
префикс+
.Примеры: -0055
,0787
,1999
,+10191
Y
Полное числовое представление года, не менее 4 цифр, с -
для годов до нашей эры.Примеры: -0055
,0787
,1999
,2003
,10191
.y
Номер года, 2 цифры Примеры: 99
,03
Время — — a
Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре am
илиpm
A
Ante meridiem или Post meridiem в верхнем регистре AM
илиPM
B
Время в формате Интернет-времени (альтернативной системы отсчёта времени суток) от 000
до999
g
Часы в 12-часовом формате без ведущего нуля от 1
до12
G
Часы в 24-часовом формате без ведущего нуля от 0
до23
h
Часы в 12-часовом формате с ведущим нулём от 01
до12
H
Часы в 24-часовом формате с ведущим нулём от 00
до23
i
Минуты с ведущим нулём от 00
до59
s
Секунды с ведущим нулём от 00
до59
u
Микросекунды. Учтите, что date() всегда будет возвращать 000000
, т.к. она принимает целочисленный (int) параметр, тогда как DateTime::format() поддерживает микросекунды, если DateTime создан с ними.Например: 654321
v
Миллисекунды. Замечание такое же как и для u
.Пример: 654
Часовой пояс — — e
Идентификатор часового пояса Примеры: UTC
,GMT
,Atlantic/Azores
I
(заглавная i)Признак летнего времени 1
, если дата соответствует летнему времени,0
в противном случае.O
Разница с временем по Гринвичу без двоеточия между часами и минутами Например: +0200
P
Разница с временем по Гринвичу с двоеточием между часами и минутами Например: +02:00
p
То же, что и P
, но возвращаетZ
вместо+00:00
(доступен, начиная с PHP 8.0.0)Например: Z
или+02:00
T
Аббревиатура часового пояса, если известна; в противном случае смещение по Гринвичу. Примеры: EST
,MDT
,+05
Z
Смещение часового пояса в секундах. Для часовых поясов, расположенных западнее UTC, возвращаются отрицательные числа, а для расположенных восточнее UTC — положительные. от -43200
до50400
Полная дата/время — — c
Дата в формате стандарта ISO 8601 2004-02-12T15:19:21+00:00 r
Дата в формате » RFC 222/» RFC 5322 Например: Thu, 21 Dec 2000 16:01:07 +0200
U
Количество секунд, прошедших с начала Эпохи Unix (1 января 1970 00:00:00 GMT) Смотрите также time() Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений.
Z
всегда возвращает0
при использовании gmdate().Замечание:
Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа int, форматирующий символ
u
будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create().
Возвращаемые значения
Возвращает строку с отформатированной датой в случае успешного выполнения.
Помощь, поддержка, консультации, доработки сборки биржи услуг на Cotonti заказать можно по контактам: Email: [email protected] Skype: webitproff Telegram: webitproff