- Дата и время в PHP
- PHP-функции для работы с датой и временем
- Пример 1
- Пример 2
- Пример 3
- Пример 4
- Еще примеры:
- checkdate
- Parameters
- Return Values
- Examples
- See Also
- User Contributed Notes 1 note
- Get the Current Date and Time in PHP
- Use date() and time() Function to Get the Current Date and Time in PHP
- Use DateTime Object to Get the Current Date and Time in PHP
- Related Article — PHP Date
- Related Article — PHP DateTime
Дата и время в PHP
В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.
PHP-функции для работы с датой и временем
PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:
time() Возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX). getdate( ) Считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:
seconds | Секунды (0-59) |
minutes | Минуты (0-59) |
hours | Часы (0-23) |
mday | День месяца (1-31) |
wday | День недели (0-6), начиная с воскресенья |
mon | Месяц (1-12) |
year | Год |
yday | День года (0-365) |
weekday | Название дня недели (например, Friday) |
month | Название месяца (например, January) |
0 | Абсолютное время |
Пример 1
$d = getdate(); // использовано текущее время foreach ( $d as $key => $val ) echo "$key = $val
"; echo "
Сегодня: $d[mday].$d[mon].$d[year]";
seconds = 47
minutes = 10
hours = 17
mday = 21
wday = 5
mon = 7
year = 2023
yday = 201
weekday = Friday
month = July
0 = 1689948647
Сегодня: 21.7.2023
date() Форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:
a | Включено обозначение «am» или «pm» |
A | Включено обозначение «AM» или «PM» |
d | День месяца (01-31) |
D | Сокращенное название дня недели (три буквы) |
F | Полное название месяца |
g | Часы (12-часовой формат без ведущих нулей) |
G | Часы (24-часовой формат без ведущих нулей) |
h | Часы (12-часовой формат) |
H | Часы (24-часовой формат) |
i | Минуты (00-59) |
j | День месяца без ведущих нулей (1-31) |
l | Полное название дня недели |
L | Признак високосного года (0 или 1) |
m | Месяц (01-12) |
M | Сокращенное название месяца (три буквы) |
n | Месяц (1-12) |
s | Секунды (00-59) |
t | Количество дней в данном месяце (от 28 до 31) |
U | Абсолютное время |
w | Номер дня недели (0 — воскресенье, 6 — суббота) |
y | Год (два разряда) |
Y | Год (четыре разряда) |
z | День года (0-365) |
Z | Смещение часового пояса в секундах (от -43200 до 43200) |
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту «\». Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку «n», то надо ввести «\\n», поскольку «\n» является символом новой строки.
Пример 2
mktime() Возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate() . Принимает до шести целочисленных аргументов в следующем порядке:
часы
минуты
секунды
месяц
день месяца
год
Пример 3
date( "j F Y, \a\\t g.i a, l", mktime( 13, 30, 0, 1, 22, 1971 ) );
22 January 1971, at 1.30 pm, Friday
checkdate() Проверка правильности даты. Аргументы: месяц, день, год. Возвращает true , если дата правильная, т.е.
месяц — целое число от 1 до 12;
день — целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
год — целое число от 1 до 32767.
if ( !checkdate( $month, 1, $year ) )
Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.
strftime() Формирование локальной даты и времени.
Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate() . Строка формата может содержать следующие коды:
%a | Сокращенное название дня недели |
%A | Полное название дня недели |
%b | Сокращенное название месяца |
%B | Полное название месяца |
%c | Предпочтительный формат даты и времени |
%C | Номер века |
%d | День месяца (1-31) |
%D | То же, что и %m/%d/%y |
%e | Месяц (1-12) |
%h | То же, что и %b |
%H | Часы (24-часовой формат) |
%I | Часы (12-часовой формат) |
%j | День года (0-365) |
%m | Месяц (1-12) |
%M | Минуты |
%n | Символ новой строки |
%p | Включено обозначение «am» или «pm» |
%r | Время с использованием a.m./p.m.-нотации |
%R | Время в 24-часовом формате |
%S | Секунды (00-59) |
%t | Символ табуляции |
%T | То же, что и %H:%M:%S |
%u | Номер дня недели (1 — понедельник, 7 — воскресенье) |
%U | Номер недели. Отсчет начинается с первого воскресенья года |
%V | Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем |
%W | Номер недели. Отсчет начинается с первого понедельника года |
%w | Номер дня недели (0 — воскресенье, 6 — суббота) |
%x | Предпочтительный формат даты без времени |
%X | Предпочтительный формат времени без даты |
%y | Год (два разряда) |
%Y | Год (четыре разряда) |
%Z | Часовой пояс (имя или сокращение) |
%% | Символ «%» |
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.
Пример 4
echo strftime("%A %d %B %Y %H:%M
"); //error_reporting(E_ALL & ~E_WARNING); //setlocale(LC_ALL,''); echo strftime("Сегодня %A %d %B %Y %X
"); echo strftime("%Z
");
Friday 21 July 2023 17:10
Сегодня Friday 21 July 2023 17:10:47
MSK
Еще примеры:
checkdate
Checks the validity of the date formed by the arguments. A date is considered valid if each parameter is properly defined.
Parameters
The month is between 1 and 12 inclusive.
The day is within the allowed number of days for the given month . Leap year s are taken into consideration.
The year is between 1 and 32767 inclusive.
Return Values
Returns true if the date given is valid; otherwise returns false .
Examples
Example #1 checkdate() example
The above example will output:
See Also
- mktime() — Get Unix timestamp for a date
- strtotime() — Parse about any English textual datetime description into a Unix timestamp
User Contributed Notes 1 note
With DateTime you can make the shortest date&time validator for all formats.
function validateDate ( $date , $format = ‘Y-m-d H:i:s’ )
$d = DateTime :: createFromFormat ( $format , $date );
return $d && $d -> format ( $format ) == $date ;
>
var_dump ( validateDate ( ‘2012-02-28 12:12:12’ )); # true
var_dump ( validateDate ( ‘2012-02-30 12:12:12’ )); # false
var_dump ( validateDate ( ‘2012-02-28’ , ‘Y-m-d’ )); # true
var_dump ( validateDate ( ’28/02/2012′ , ‘d/m/Y’ )); # true
var_dump ( validateDate ( ’30/02/2012′ , ‘d/m/Y’ )); # false
var_dump ( validateDate ( ’14:50′ , ‘H:i’ )); # true
var_dump ( validateDate ( ’14:77′ , ‘H:i’ )); # false
var_dump ( validateDate ( 14 , ‘H’ )); # true
var_dump ( validateDate ( ’14’ , ‘H’ )); # true
var_dump ( validateDate ( ‘2012-02-28T12:12:12+02:00’ , ‘Y-m-d\TH:i:sP’ )); # true
# or
var_dump ( validateDate ( ‘2012-02-28T12:12:12+02:00’ , DateTime :: ATOM )); # true
var_dump ( validateDate ( ‘Tue, 28 Feb 2012 12:12:12 +0200’ , ‘D, d M Y H:i:s O’ )); # true
# or
var_dump ( validateDate ( ‘Tue, 28 Feb 2012 12:12:12 +0200’ , DateTime :: RSS )); # true
var_dump ( validateDate ( ‘Tue, 27 Feb 2012 12:12:12 +0200’ , DateTime :: RSS )); # false
# .
- Date/Time Functions
- checkdate
- date_add
- date_create_from_format
- date_create_immutable_from_format
- date_create_immutable
- date_create
- date_date_set
- date_default_timezone_get
- date_default_timezone_set
- date_diff
- date_format
- date_get_last_errors
- date_interval_create_from_date_string
- date_interval_format
- date_isodate_set
- date_modify
- date_offset_get
- date_parse_from_format
- date_parse
- date_sub
- date_sun_info
- date_sunrise
- date_sunset
- date_time_set
- date_timestamp_get
- date_timestamp_set
- date_timezone_get
- date_timezone_set
- date
- getdate
- gettimeofday
- gmdate
- gmmktime
- gmstrftime
- idate
- localtime
- microtime
- mktime
- strftime
- strptime
- strtotime
- time
- timezone_abbreviations_list
- timezone_identifiers_list
- timezone_location_get
- timezone_name_from_abbr
- timezone_name_get
- timezone_offset_get
- timezone_open
- timezone_transitions_get
- timezone_version_get
Get the Current Date and Time in PHP
- Use date() and time() Function to Get the Current Date and Time in PHP
- Use DateTime Object to Get the Current Date and Time in PHP
In this article, we will introduce methods to get the current date and time in PHP.
Use date() and time() Function to Get the Current Date and Time in PHP
We could use built-in functions date() and time() to get the current date and time in PHP. These functions display the current date and time irrespective of the time zone. The correct syntax to use these two functions is as follows.
It returns the date that is set according to the specified format.
The time() function accepts no parameters. It returns the current PHP timestamp. The timestamp is the number of seconds calculated since the Unix Epoch.
The program below shows how to get the current date and time irrespective of the time zone.
php $DateAndTime = date('m-d-Y h:i:s a', time()); echo "The current date and time are $DateAndTime."; ?>
The format «m-d-Y h:i:s a» specifies the returned date with month, day and 4-digit year value, and the time in hours, minutes, and seconds.
The current date and time are 05-20-2020 05:44:03 pm.
One thing to note here is that the time is not set according to some time zone. It is the time displayed using Unix timestamp. If you want to check the current PHP time based on your time zone, you need to set the time zone manually.
For example, if you want to check the current time in Amsterdam, you have to set the time zone for Amsterdam manually. For this purpose, the PHP function date_default_timezone_set() is used. The correct syntax to use this function is as follows
date_default_timezone_set($timezone);
It accepts only one parameter.
This function returns a bool value. If the time zone is set successfully, it returns true ; otherwise, it returns false .
The program below will display the time after setting the time zone.
php date_default_timezone_set('Europe/Amsterdam'); $DateAndTime = date('m-d-Y h:i:s a', time()); echo "The current date and time in Amsterdam are $DateAndTime.\n"; date_default_timezone_set('America/Toronto'); $DateAndTime2 = date('m-d-Y h:i:s a', time()); echo "The current date and time in Toronto are $DateAndTime2."; ?>
The current date and time in Amsterdam are 05-20-2020 08:08:42 pm. The current date and time in Toronto are 05-20-2020 02:08:42 pm.
Use DateTime Object to Get the Current Date and Time in PHP
In PHP, DateTime class is used to deal with the problems related to the date and time . The format() function of this class displays the date and time in a specified format.
We will first create a DateTime object and then call format() function to display the date and time.
$ObjectName = new DateTime(); $ObjectName->format($format);
The example program that displays the current date and time is as follows.
php $Object = new DateTime(); $DateAndTime = $Object->format("d-m-Y h:i:s a"); echo "The current date and time are $DateAndTime."; ?>
The output is the date and time with the specified format. The time displayed is the time calculated since the Unix Epoch.
The current date and time are 20-05-2020 06:21:06 pm.
If you want to check the time according to a specific time zone, you will have to set the time zone manually. For this purpose, the PHP built-in function of DateTime class setTimezone() is used. The correct syntax to use this function is as follows.
$ObjectName = new DateTime(); $ObjectName->setTimezone(DateTimezone $timezone);
The example program that displays the time according to a specific time zone is as follows.
php $Object = new DateTime(); $Object->setTimezone(new DateTimeZone('Europe/Amsterdam')); $DateAndTime = $Object->format("d-m-Y h:i:s a"); echo "The current date and time in Amsterdam are $DateAndTime.\n"; $Object->setTimezone(new DateTimeZone('America/Toronto')); $DateAndTime = $Object->format("d-m-Y h:i:s a"); echo "The current date and time in Toronto are $DateAndTime."; ?>
The current date and time in Amsterdam are 20-05-2020 08:43:02 pm. The current date and time in Toronto are 20-05-2020 02:43:02 pm.
Related Article — PHP Date
Related Article — PHP DateTime