Примеры использования даты и времени на php

В распределенных системах, время играет особую роль. Из-за незначительного расхождения системных часов игрок на Forex может потерять тысячи долларов

В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д. 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

<html>
<head>
<title>Использование getdate()</title>
</head>
 
<body>
<?php $d = getdate(); // использовано текущее время
foreach ( $d as $key => $val )
echo "$key = $val<br>";
echo "<hr>Сегодня: $d[mday].$d[mon].$d[year]"; ?>
</body>
</html>

Результат 1

seconds = 21
minutes = 4
hours = 12
mday = 10
wday = 4
mon = 11
year = 2005
yday = 313
weekday = Thursday
month = November
0 = 1131613461
Сегодня: 10.11.2005

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

<html>
<head>
<title>Использование date()</title>
</head>
 
<body>
<?php echo date( "Сегодня d.m.y H:i" ); ?>
</body>
</html>

Результат 2

Сегодня: 10.11.05 13:03

mktime( )

— возвращает абсолютное время, которое затем можно использовать с функциями date() getdate(). Принимает до шести целочисленных аргументов в следующем порядке:

  1. часы
  2. минуты
  3. секунды
  4. месяц
  5. день
  6. месяца
  7. год

Пример 3

<html>
<head>
<title>Использование mktime()</title>
</head>
 
<body>
<?php echo date( "j of F Y, \a\\t g.i a, l", mktime( 13, 30, 0, 1, 22, 1971 ) ); ?>
</body>
</html>

Результат 3

22 of January 1971, at 1.30 pm, Friday

checkdate( )

— проверка правильности даты. Аргументы: месяц, день, год. Возвращает true, если дата правильная, т.е.

  1. месяц — целое число от 1 до 12;
  2. день — целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
  3. год — целое число от 1 до 32767.

Пример 4

if ( !checkdate( $month, 1, $year ) ) {
$d = getdate();
$month = $d[mon];
$year = $d[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 Часовой пояс (имя или сокращение)
%% Символ «%»

Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.

Пример 5

<html>
<head>
<title>Использование strftime()</title>
</head>
 
<body>
<?php echo strftime("%A %d %B %Y %H:%M<br>");
error_reporting(E_ALL & ~E_WARNING);
setlocale('LC_ALL','');
echo strftime("Сегодня %A %d %B %Y %X<br>");
echo strftime("%Z<br>"); ?>
</body>
</html>

Результат 5

Tuesday 15 November 2005 13:11
Сегодня вторник 15 Ноябрь 2005 13:11:14
Московское время (зима)

Примеры использования php для вывода даты и времени

Код: date("l dS of F Y h:i:s A") : Пример: Sunday 14th 2013f April 2013 11:52:06 AM
Код: date("Сегодня d.m.Y") : Пример: Сегодня 14.04.2013
Код: date("Этот файл датирован d.m.Y", filectime(__FILE__)) : Пример: Этот файл датирован 30.08.2011
Код: // Активизируем текущую локаль (иначе дата будет на английском).
setlocale(LC_ALL, ''); // Выводим 2 предложения.
echo strftime("%B %Y года, %d число. Был %A, часы показывали %H:%M.");
Пример: April 2013 года, 14 число. Был Sunday, часы показывали 11:52.
Очень интересное решение по нахождению вчерашнего дня написал Bermuda с PHP Club:
$time = strtotime("-1 day");
$fecha = date("Y-m-d", $time);

PHP дата и время

Этот материал впервые был опубликован 24 апреля 2017 года. Актуальность информации подтверждена 16 января 2024 году.