В этой статье рассмотрим методы преобразования даты в метку времени (timestamp) в PHP.
Содержание
Использование функции strtotime()
Встроенная функция strtotime()
преобразует дату во временную метку Unix. Временная метка Unix — это общее количество секунд, отсчитываемое от эпохи Unix (1 января 1970 года). Правильный синтаксис для использования этой функции следующий:
strtotime($dateString, $timeNow);
Эта функция имеет два параметра. $dateString
— это строка даты/времени, которая должна соответствовать допустимому формату PHP. Это обязательный параметр. Другой параметр $timeNow
является необязательным, это метка времени, которая используется для вычисления относительных дат. Текущее время now
является значением по умолчанию, если второй параметр опущен.
<?php
$timestamp = strtotime("23-04-2020");
echo "The timestamp is $timestamp.";
Дата здесь представлена в формате "d-m-Y"
. Мы передали только один параметр, так как он преобразует date
в Unix timestamp
(временную метку Unix).
Вывод:
The timestamp is 1587600000.
Использование функции strptime()
Это еще одна функция для преобразования даты в timestamp
Unix. Она не преобразует date
непосредственно в timestamp
. Она возвращает массив, в котором указаны секунды, минуты, часы и некоторые другие данные. Мы можем использовать эти данные для преобразования date
в timestamp
.
strptime($dateString, $format);
Она имеет два обязательных параметра. $dateString
— это строка даты, а $format
— формат для парсинга $dateString
.
<?php
$array = strptime('23-04-2020', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $array['tm_mon']+1, $array['tm_mday'], $array['tm_year']+1900);
echo "The timestamp is $timestamp.";
Вывод:
The timestamp is 1587600000.
После создания массива функция mktime()
преобразует date
в timestamp
.
Синтаксис функции mktime()
следующий:
mktime(hour, minute, second, month, day, year, is_dst)
is_dst
определяет, является ли дата-время переходом на летнее время, но удален из PHP 7.0.0.
Мы прибавим 1
к $array['tm_mon']
и затем используем сумму в качестве параметра month
в mktime
, поскольку $array['tm_mon']
начинается с 0
, или, другими словами, $array['tm_mon']
января равен 0
.
Использование функции getTimestamp()
Метод getTimestamp()
объекта DateTime
— это простой метод преобразования даты в timestamp. Он имеет другой способ представления date_timestamp_get()
, который является представлением процедурного стиля.
$datetimeObject->getTimestamp();
Мы создадим объект Datetime
для вызова этой функции. Это объектно-ориентированный стиль вызова функции.
<?php
$date = new DateTime('2020-04-23');
$timestamp = $date->getTimestamp();
echo "The timestamp is $timestamp.";
Объект $date
класса Datetime
вызвал метод getTimestamp()
для преобразования date
(даты) в Unix timestamp
.
Вывод:
The timestamp is 1587600000.
Использование функции format()
Мы также можем использовать метод format()
в DateTime
для преобразования даты в метку времени. Этот метод имеет другое представление date_format()
, которое является представлением функции format()
в процедурном стиле.
$datetimeObject->format("U");
Чтобы преобразовать дату в метку времени, формат, который мы передадим в виде строки, будет "U"
.
<?php
$dateObject = new DateTime('2020-04-23');
$timestamp = $dateObject->format("U");
echo "The timestamp is $timestamp.";
Объект $dateObject
класса Datetime
вызвал функцию format()
для преобразования даты в временную метку Unix.
Вывод:
The timestamp is 1587600000.