Разработчику. Сборник рецептов PHP
Задавайте вопросы

Определение текущей даты и времени

Вернуться назад

Задача

Необходимо узнать текущее время или дату

Решение

Для получения отформатированной строки времени предназначена функция strftime() или date():

print strftime('%c');
print date('r');
Mon Aug 12 18:23:45 2002
Mon, 12 Aug 2002 18:23:45 -0400

Функции getdate() и localtime() позволяют получить отдельные части времени:

$now_1 = getdate();
$now_2 = localtime();
print "$now_1[hours]:$now_1[minutes]:$now_1[seconds]";
print "$now_2[2]:$now_2[1]:$now_2[0]";
18:23:45
18:23:45

Обсуждение

Функции strftime() и date() могут выработать множество отформатированных строк времени или даты и рассматриваются в рецепте описанных ниже. Напротив, и функция localtime(), и функция getdate() возвращают массив, элементами которого являются отдельные части даты и времени.

Ассоциативный массив, который возвращает функция getdate(), содержит пары ключ/значение, перечисленные в таблице:

Массив, возвращаемый функцией getdate()
Ключ Значение
secondsСекунды
minutesМинуты
hoursЧасы
mdayДень месяца
wdayДень недели, числовое значение (воскресенье – это 0, суббота – это 6)
monМесяц, числовое значение
yearГод, числовое значение
ydayДень года, числовое значение (т. е. 299)
weekdayДень недели, полное текстовое значение (т. е. «Friday»)
monthМесяц, полное текстовое значение (т. е. «January»)

Следующий пример показывает, как использовать функцию getdate() для вывода на печать месяца, дня и года (*)

$a = getdate();
printf('%s %d, %d',$a['month'],$a['mday'],$a['year']);
August 7, 2017

Передайте фунции getdate() метку времени UNIX в качестве аргумента, чтобы обеспечить соответствие значений массива локальному времени данной временной метки. Например, месяц, день и год, соответствующие метке времени UNIX, равной 163727100, это:

$a = getdate(163727100);
printf('%s %d, %d',$a['month'],$a['mday'],$a['year']);
March 10, 1975

Функция localtime() возвращает массив частей времени и даты. Кроме того, она принимает метку времени UNIX в качестве необязательного первого аргумента, а также логическое значение в качестве необязательного второго аргумента. Если этот второй аргумент равен true, то функция localtime() возвращает ассоциативный массив вместо массива с числовым индексом. Ключи этого массива совпадают с членами структуры tm_struct, возвращаемой функцией языка C localtime(), как показано в таблице:

Массив, возвращаемый фунцией localtime()
Числовая позиция Ключ Значение
0 tm_sec Секунды
1 tm_min Минуты
2 tm_hour Часы
3 tm_mday День месяца
4 tm_mon Месяц года (Январь, если 0)
5 tm_year Год с 1900 года
6 tm_wday День недели
7 tm_yday День года
8 tm_isdst Учитывается ли переход на летнее время (DST)?

Следующий пример показывает, как использовать функцию localtime() для вывода на печать текущей даты в формате месяц/число/год:

$a = localtime();
$a[4] += 1;
$a[5] += 1900;
print "$a[4]/$a[3]/$a[5]";
8/6/2017

Перед выводом на печать значение месяца увеличивается на 1, так как функция localtime() начинает отсчет месяцев с 0 для января, а мы хотим видеть 1, если текущий месяц январь. Таким же образом год увеличивается на 1900, поскольку функция localtime() начинает отсчет лет с 0 для 1900-го.

Подобно getdate(), функция localtime() принимает метку времени UNIX в качестве необязательного первого аргумента и возвращает части времени для этой временной метки:

$a = localtime(163727100);
$a[4] += 1;
$a[5] += 1900;
print "$a[4]/$a[3]/$a[5]";
3/10/1975


(*) Для того чтобы название месяца или дня недели выводилось на русском языке, следует установить нужную локализацию с помощью функции setlocale(). Например, для кодировки Windows-1251 можно попробовать написать:

setlocale(LC_ALL,"ru_RU.CP1251");
echo strftime(«F»);


Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ