Необходимо узнать текущее время или дату
Для получения отформатированной строки времени предназначена функция 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»);