вторник, 22 ноября 2022 г.

PHP вывести дату/время в формате с буквами T и Z

Поизучал документацию по теме и пришёл к такому выводу, который решил тут зафиксировать на память.

Во-первых, полезные ссылки:
https://en.wikipedia.org/wiki/ISO_8601 (именно в англоязычной версии есть пояснение буквы Z),
https://www.php.net/manual/ru/datetime.format.php
https://www.php.net/manual/ru/class.datetimeinterface.php

Теперь вкратце:
T - это символ-граница, указывающий на то, что далее за ним идёт указание уже времени, а не даты.
Z - это сокращённый вариант написания нулевого отклонения часового пояса от UTC. Равнозначно "+00:00".

Если нам известна, к примеру, временная метка Unix (php функция time()), то получить дату в требуемом формате можно так:

Для PHP 8.0+:

gmdate('Y-m-d\\TH:i:sp', $time);

Для более ранних версий PHP (буква 'p' маленькая не работает):

gmdate('Y-m-d\\TH:i:s\\Z', $time);

Тут я не рассматриваю указание микросекунд, т.к. это бесполезно, когда на входе у нас time() или strtotime(). Но по необходимости можно добавить и микро- или милисекунды. Символы для параметра $format приведены в документации PHP, ссылка выше.

Обращаю внимание, используется именно gmdate(), а не просто date() - раз нам надо получить дату с нулевым отклонением часового пояса от UTC.

Комментариев нет:

Отправить комментарий