UPD

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

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

PHP дата и время

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

Обсуждение

500
  Подписаться  
Уведомлять