- PHP | Дата и время
- Функция PHP date()
- Синтаксис
- Параметры функции date():
- Пример
- Как всегда в футере выводить текущий год?
- Пример
- Определите свой часовой пояс
- Пример
- Функция PHP mktime()
- PHP DateTime
- Introduction to the PHP DateTime class
- Creating a DateTime object from a string
- Comparing two DateTime objects
- Calculating the differences between two DateTime objects
- Adding an interval to a DateTime object
- Summary
PHP | Дата и время
В этом уроке рассмотрм, как на практике использовать функции PHP по получению даты и времени, а также рассмотрим способы вывода и форматирования даты и времени. Функции PHP, обрабатывающие дату и время, позволяют получать дату и время с того сервера, на котором выполняется сценарий. Также эти функции позволяют нам редактировать и форматировать полученные временные значения перед их отображением (выводом) на экран.
Функция PHP date()
Функция date() выводит текущие дату и время в заданном формате. Также функция может конвертировать формат отметки времени (временная метка, метка времени или timestamp) в удобочитаемый формат.
Синтаксис
Параметры функции date():
format Обязательный. Задает формат метки времени timestamp Необязательный. Задает отметку времени. По умолчанию текущая дата и время
Функция date() возвращает строку, которая отформатирована в соответствии с указанным шаблоном format . Параметр timestamp задает метку времени. Если timestamp не задан, тогда используется текущее системное время.
Примечание: Отметка времени — это последовательность символов, обозначающая дату и / или время, когда произошло определенное событие.
Обязательный параметр format функции date() указывает, как форматировать дату (или время). Формат задается управляющими командами (латиницей), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).
Ниже представлена таблица с расшифровкой некоторых символов в строке format :
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | — | — |
d | День месяца с 2-мя цифрами | от 01 до 31 |
D | День недели в текстовом формате, 3 символа | от Mon до Sun |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Месяц | — | — |
F | Полное название месяца, например, January или March | от January до December |
m | Порядковый номер месяца, 2 цифры | от 01 до 12 |
M | Сокращенное название месяца, 3 символа | от Jan до Dec |
Год | — | — |
Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2019 |
y | Порядковый номер года, 2 цифры | Примеры: 99, 19 |
Время | — | — |
a | Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
g | Часы в 12-часовом формате | от 1 до 12 |
G | Часы в 24-часовом формате | от 0 до 23 |
h | Часы в 12-часовом формате | от 01 до 12 |
H | Часы в 24-часовом формате, 2 цифры | от 00 до 23 |
i | Минуты, 2 цифры | от 00 до 59 |
s | Секунды, 2 цифры | от 00 до 59 |
Ниже представлены некоторые примеры получения фактической информации о дате и времени:
Пример
echo "Отображение текущей даты: " . date('d-m-Y') . "
";
echo "Отображение текущего времени: " . date('H:i:s') . "
";
echo "Отображение текущей даты и времени: " . date('d-m-Y H:i:s') . "
";
echo "Отображение текущей даты и времени в длинном формате: " . date('d F Y, D - g:i:s A');
?>
Как всегда в футере выводить текущий год?
Используйте функцию date() для автоматического обновления года в футере вашего веб-сайта:
Пример
Copyright © 2014- Все права защищены.
Результат выполнения кода:
Примечание: Обратите внимание, что функция PHP date() вернет текущую дату / время сервера!
Определите свой часовой пояс
Если сервер, на котором расположен ваш сайт, находится в другой стране или настроен для другого часового пояса, то текущее время, возвращаемое функцией date(), будет отличаться от реального времени вашего часового пояса.
Итак, если вам нужно, чтобы время было правильным для вашего региона, вы можете установить часовой пояс, который хотите использовать.
Функция date_default_timezone_set() устанавливает временную зону по умолчанию для всех функций даты и времени в скрипте.
Параметр timezone_identifier — это идентификатор временной зоны.
Функция date_default_timezone_set() устанавливает часовой пояс, который по умолчанию используется всеми дата/время функциями в сценарии. Чтобы изменить значение часового пояса для вашего веб-сайта, достаточно в начале скрипта задать функцию date_default_timezone_set() , параметром которой будет служить название часового пояса.
В приведенном ниже примере для часового пояса устанавливается значение ‘Europe/Moscow’, а затем выводится текущее время в указанном формате:
Пример
echo "Текущее время в Москве " . date("h:i:sa");
date_default_timezone_set('Europe/Kiev');
echo "Текущее время в Киеве " . date("h:i:sa");
?>
Функция PHP mktime()
Необязательный параметр timestamp функции date() указывает временную метку. Если она не указано, будут использоваться текущая дата и время (как в примерах выше).
Но если вам нужно получить метку времени в прошлом или будущем, то сделать это можно с помощью функции mktime() . Вам нужно указать нужную дату, и она возвращается с меткой времени Unix. Метка времени Unix содержит количество секунд между эпохой Unix (1 января 1970 г., 00:00:00 GMT) и указанным временем.
Синтаксис данной функции следующий:
Здесь используются следующие данные:
hour Количество часов, прошедших с начала дня, указанного параметрами month, day и year. minute Количество минут, прошедших от начала часа, указанного параметром hour. second Количество секунд, прошедших от начала минуты, указанной параметром minute. month Количество месяцев, прошедших с конца предыдущего года. day Количество дней, прошедших с конца предыдущего месяца. year Номер года, может быть указан двумя или четырьмя цифрами.
Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.
Функцию mktime() удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет «Jan-01-1921»:
PHP DateTime
Summary: in this tutorial, you’ll learn how to work with the date and time in an object-oriented way.
Introduction to the PHP DateTime class
PHP provides a set of date and time classes that allow you to work with the date and time in an object-oriented way.
To create a new date and time object, you use the DateTime class. For example:
$datetime = new DateTime(); var_dump($datetime);
Code language: PHP (php)
object(DateTime)#1 (3) ["date"]=> string(26) "2021-07-15 06:30:40.294788" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" >
Code language: PHP (php)
The DateTime object represents the current date and time in the timezone specified in the PHP configuration file ( php.ini )
To set a new timezone, you create a new DateTimeZone object and pass it to the setTimezone() method of the DateTime object:
$datetime = new DateTime(); $timezone = new DateTimeZone('America/Los_Angeles'); $datetime->setTimezone($timezone); var_dump($datetime);
Code language: PHP (php)
object(DateTime)#1 (3) ["date"]=> string(26) "2021-07-14 21:33:27.986925" ["timezone_type"]=> int(3) ["timezone"]=> string(19) "America/Los_Angeles" >
Code language: PHP (php)
In this example, we create a new DateTimeZone object and set it to «America/Los_Angeles» . To get valid timezones supported by PHP, check out the timezone list.
To format a DateTime object, you use the format() method. The format string parameters are the same as those you use for the date() function. For example:
$datetime = new DateTime(); echo $datetime->format('m/d/Y g:i A');
Code language: PHP (php)
07/15/2021 6:38 AM
Code language: PHP (php)
To set a specific date and time, you can pass a date & time string to the DateTime() constructor like this:
$datetime = new DateTime('12/31/2019 12:00 PM'); echo $datetime->format('m/d/Y g:i A');
Code language: PHP (php)
Or you can use the setDate() function to set a date:
$datetime = new DateTime(); $datetime->setDate(2020, 5, 1); echo $datetime->format('m/d/Y g:i A');
Code language: PHP (php)
05/01/2020 6:42 AM
Code language: PHP (php)
The time is derived from the current time. To set the time, you use the setTime() function:
$datetime = new DateTime(); $datetime->setDate(2020, 5, 1); $datetime->setTime(5, 30, 0); echo $datetime->format('m/d/Y g:i A');
Code language: PHP (php)
05/01/2020 5:30 AM
Code language: PHP (php)
Since the setDate() , setTime() , and setTimeZone() method returns the DateTime object, you can chain them like this which is quite convenient.
$datetime = new DateTime(); echo $datetime->setDate(2020, 5, 1) ->setTime(5, 30) ->setTimezone(new DateTimeZone('America/New_York')) ->format('m/d/Y g:i A');
Code language: PHP (php)
04/30/2020 11:30 PM
Code language: PHP (php)
Creating a DateTime object from a string
When you pass the date string ’06/08/2021′ to the DateTime() constructor or setDate() function, PHP interprets it as m/d/Y . For example:
$datetime = new DateTime('06/08/2021'); echo $datetime->format('F jS, Y');
Code language: PHP (php)
June 8th, 2021
Code language: PHP (php)
If you want to pass it as August 6th, 2021, you need to use the – or . instead of /. For example:
$datetime = new DateTime('06-08-2021'); echo $datetime->format('F jS, Y');
Code language: PHP (php)
August 6th, 2021
Code language: PHP (php)
However, if you want to parse the date string ’06/08/2021′ as d/m/Y, you need to replace the / with – or . manually:
$ds = '06/08/2021'; $datetime = new DateTime(str_replace('/', '-', $ds)); echo $datetime->format('F jS, Y');
Code language: PHP (php)
August 6th, 2021
Code language: PHP (php)
A better way to do it is to use the createFromFormat() static method of the DateTime object:
$ds = '06/08/2021'; $datetime = DateTime::createFromFormat('d/m/Y', $ds); echo $datetime->format('F jS, Y');
Code language: PHP (php)
In this example, we pass the date format as the first argument and the date string as the second argument.
Note that when you pass a date string without the time, the DateTime() constructor uses midnight time. However, the createFromFormat() method uses the current time.
Comparing two DateTime objects
PHP allows you to compare two DateTime objects using the comparison operators including >, >=, . For example:
$datetime1 = new DateTime('01/01/2021 10:00 AM'); $datetime2 = new DateTime('01/01/2021 09:00 AM'); var_dump($datetime1 < $datetime2); // false var_dump($datetime1 > $datetime2); // true var_dump($datetime1 == $datetime2); // false var_dump($datetime1 $datetime2); // 1
Code language: PHP (php)
Calculating the differences between two DateTime objects
The diff() method of the DateTime() object returns the difference between two DateTime() objects as a DateInterval object. For example:
$dob = new DateTime('01/01/1990'); $to_date = new DateTime('07/15/2021'); $age = $to_date->diff($dob); var_dump($age);
Code language: PHP (php)
object(DateInterval)#3 (16) ["y"]=> int(31) ["m"]=> int(6) ["d"]=> int(14) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(1) ["days"]=> int(11518) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) >
Code language: PHP (php)
The DateInterval represents the differences between two dates in the year, month, day, hour, etc. To format the difference, you use the DateInterval ‘s format. For example:
$dob = new DateTime('01/01/1990'); $to_date = new DateTime('07/15/2021'); echo $to_date->diff($dob)->format('%Y years, %m months, %d days');
Code language: PHP (php)
31 years, 6 months, 14 days
Code language: PHP (php)
Adding an interval to a DateTime object
To add an interval to date, you create a new DateInterval object and pass it to the add() method. The following example adds 1 year 2 months to the date 01/01/2021 :
$datetime = new DateTime('01/01/2021'); $datetime->add(new DateInterval('P1Y2M')); echo $datetime->format('m/d/Y');
Code language: PHP (php)
03/01/2022
Code language: PHP (php)
To format a date interval, you use the date interval format strings.
To subtract an interval from a DateTime object, you create a negative interval and use the add() method.
Summary
- Use the DateTime class to work with the date and time.
- Use the DateTimeZone class to work with time zones.
- Use the comparison operators to compare two DateTime objects.
- Use the diff() method to calculate the difference between to DateTime objects.
- Use the DateInterval class to represent a date and time interval.
- Use the add() method to add an interval to or subtract an interval from a DateTime object.