Получение Метки Времени
Давайте начнем с базовой функции PHP для получения метки времени, которую мы будем использовать time()
для получения текущей метки времени и даты для форматирования выходных данных.
$now = time(); echo $now; echo date('Y-m-d', $now);
Сохраненная временная метка $now
похожа на 1610246191, поэтому мы форматируем ее, используя date('Y-m-d', $now)
для удобного вывода. Возвращаемая временная метка выражается в секундах, см. Функцию microtime, чтобы получить временную метку, включающую микросекунды.
Временная Метка В Объект Date Time
Хотя мы можем использовать эту date
функцию для форматирования нашей даты или метки времени, это не объектно-ориентированный способ сделать это. Давайте создадим объект DateTime и установим временную метку.
$now = time(); $date = new \DateTime(); $date->setTimeStamp($now); echo $date->format('c');
Затем мы можем вывести дату и время, используя format
метод с параметром 'c'
datetime.
Этот format
метод может форматировать дату многими различными способами, распространенными форматами являются: Y-m-d
и d/m/Y
.
echo $date->format('Y-m-d'); echo $date->format('d/m/Y');
В руководстве по PHP доступно гораздо больше форматов дат.
DateTime
Класс также может format
использовать ту же временную метку только в формате time only.
echo $date->format('H:i:s'); echo $date->format('H:i');
В приведенном выше коде мы используем формат H: i:s(Час, минута, секунда).
Дата С Часовым Поясом
DateTime
Объект может быть настроен на использование определенного часового пояса. Мы создаем новый DateTimeZone
с определенным часовым поясом и вызываем setTimeZone
метод для нашего DateTime
объекта.
$now = time(); $date = new \DateTime(); $date->setTimeStamp($now); $date->setTimeZone(new \DateTimeZone('UTC')); echo $date->format('d/m H:i'); $date->setTimeZone(new \DateTimeZone('Europe/Helsinki')); echo $date->format('d/m H:i'); $date->setTimeZone(new \DateTimeZone('Pacific/Fiji')); echo $date->format('d/m H:i');
Класс DateTimeZone имеет множество параметров часового пояса. Приведенный выше пример кода PHP отображает одну и ту же временную метку с использованием разных часовых поясов.
Преобразование Метки Времени В Дату И Время
Наша последняя функция представляет собой комбинацию DateTime
и DateTimeZone
с 3 параметрами: меткой времени, часовым поясом и форматом даты / времени с форматированием по умолчанию.
function timeStampToDateTime($timestamp, $zone, $format = "d/m/Y H:i:s") { $date = new \DateTime($zone); $date->setTimeZone(new \DateTimeZone($zone)); $date->setTimeStamp($timestamp); $result = $date->format($format); return $result; } $now = time(); echo timeStampToDateTime($now, 'GMT'); echo timeStampToDateTime('1608040800', 'Africa/Johannesburg'); echo timeStampToDateTime('1530383400', 'UTC', 'd/m/Y');
Наша пользовательская функция PHP timeStampToDateTime
принимает метку времени в качестве первого параметра, который может быть текущей меткой времени или любой другой меткой времени (возможно, меткой времени из базы данных). Он использует часовой пояс и формат для возврата удобочитаемой строки даты и времени.
Основные Выводы
- Мы можем использовать
time()
функцию для получения текущей метки времени и date
функцию для форматирования метки времени. DateTime
Класс — это объектно-ориентированный способ работы с датами и временем. DateTimeZone
Класс предоставляет функциональность часового пояса, которая может использоваться с DateTime
классом для работы с датами и временем. - Методы
format
setTimeZone
и setTimeStamp
являются основными методами, которые мы можем использовать для преобразования метки времени в дату / время. - Связанные функции PHP: microtime