
Reg.ru: домены и хостинг
Крупнейший регистратор и хостинг-провайдер в России.
Более 2 миллионов доменных имен на обслуживании.
Продвижение, почта для домена, решения для бизнеса.
Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Бесплатный Курс "Практика HTML5 и CSS3"
Освойте бесплатно пошаговый видеокурс
по основам адаптивной верстки
на HTML5 и CSS3 с полного нуля.

Фреймворк Bootstrap: быстрая адаптивная вёрстка
Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.
Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.
Верстайте на заказ и получайте деньги.
*Наведите курсор мыши для приостановки прокрутки.
Определение текущей даты и времени в PHP
В этой статье разберемся с тем, как определить текущую дату и время.
Стоит ли говорить, что эта задача встанет перед нами в любом мало-мальски серьезном веб-приложении.
Итак, для определения текущей даты и времени можно воспользоваться функцией date(), передав ей в качестве аргумента следующую форматную строку:
print date('r');
Понятно, что вывод будет зависеть от времени и даты выполнения данного кода, но в целом это будет строка вида:
Fri, 11 Mar 2016 14:23:33 -0500
Другой вариант (чуть подлиннее) - воспользоваться объектом DateTime. Он содержит метод format(), который работает аналогично функции date():
$when = new DateTime(); print $when->format('r');
Это были примеры того, как можно дату и время целиком. Если же нас интересуют отдельные компоненты даты/времени, то стоит воспользоваться функцией getdate() или localtime().
Давайте посмотрим, как они работают, на примере ниже:
$now_1 = getdate(); $now_2 = localtime(); print "{$now_1['hours']}:{$now_1['minutes']}:{$now_1['seconds']}<br>"; print "$now_2[2]:$now_2[1]:$now_2[0]";
Результат выполнения данного кода будем иметь вид:
18:23:45 18:23:45
Детали
Как мы уже видели, функция date() и объект DateTime могут генерировать строки отформатированного времени и даты.
Возможности форматирования - это отдельная тема, которую мы, возможно, рассмотрим в одной из будущих статей.
Функции же localtime() и getdate() возвращают массивы, элементы которых являются составными частями даты или времени. Так, ассоциативный массив getdate() возвращает пары «ключ - значение», перечисленные ниже.
"Ключ - Значение":
seconds - Секунды
minutes - Минуты
hours - Часы
mday - День месяца
wday - День недели в числовом представлении (воскресенье — 0, суббота — 6)
mon - Месяц в числовом представлении
year - Год (4 цифры)
yday - День года в числовом представлении (например, 299)
weekday - День недели в текстовом представлении (например, «Friday»)
month - Месяц в текстовом представлении (например, «January»)
0 - Секунды от начала эпохи (результат, возвращаемый функцией time())
В качестве примера давайте воспользуемся функцией getdate() для вывода месяца, дня и года.
$a = getdate(); printf('%s %d, %d',$a['month'],$a['mday'],$a['year']);
Результат будет следующего вида:
March 11, 2016
Идем дальше.
Для того, чтобы получить значение местного времени, нужно передать функции getdate() временную метку.
Ниже пример вывода месяца, дня и года для временной метки 163727100:
$a = getdate(163727100); printf('%s %d, %d',$a['month'],$a['mday'],$a['year']);
Будучи выполненным, код даст следующий вывод:
March 10, 1975
Функция localtime() также возвращает массив с компонентами даты и времени. Она тоже получает временную метку в первом необязательном аргументе и флаг во втором необязательном аргументе. Если второй аргумент истинен, то localtime() вернет ассоциативный массив вместо массива с числовыми индексами.
Ниже представлен массив, возвращаемый этой функцией:
"Позиция - Ключ - Значение"
0 - tm_sec - Секунды
1 - tm_min - Минуты
2 - tm_hour - Часы
3 - tm_mday - День месяца
4 - tm_mon - Месяц года (январь — 0)
5 - tm_year - Год (считая с 1990 года)
6 - tm_wday - День недели (воскресенье — 0)
7 - tm_yday - День года
8 - tm_isdst - Признак действия летнего времени
Давайте посмотрим, как можно использовать функцию localtime() для вывода текущей даты в формате "месяц/день/год":
$a = localtime(); $a[4] += 1; $a[5] += 1900; print "$a[4]/$a[3]/$a[5]";
На выходе получим:
2/4/2013
Обратите внимание, что мы увеличиваем на 1 месяц, потому что localtime() начинает отсчет месяцев с 0 (январь). Поэтому, если мы хотим, чтобы для января выводился номер 1, для февраля - номер 2, и т.д., нам нужно учесть данный момент.
По той же причине год мы увеличиваем на 1900, так как localtime() начинает отсчет лет с 0 (для года 1900).
Таким образом, функции getdate() и localtime() используют одну и ту же внутреннюю реализацию для генерирования компонентов даты и времени, однако отличаются форматом возвращаемых массивов и составом возвращаемых данных (например, функция localtime() включает признак действия летнего времени для заданного момента).
Также помните о том, что часовой пояс, используемый функциями getdate() и localtime() для вычислений, задается конфигурационной переменной date.timezone или через вызовов функции date_default_timezone_set().
Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!
Смотрите также: