PHP занятие 6. Функции даты и времени

На уроке рассмотрены функции языка php для работы с датой и временем: date(), getdate(), time(), mktime()

Функции даты и функции времени php

Функции даты и времени в PHP позволяют получить дату и время с сервера, с которого запускается сценарий.

Рассмотрим основные функции даты и функции времени php.

Функция date в php

date($format);

Данная функция возвращает строку в виде даты и/или времени в указанном формате ($format). Шаблон формата указывается в качестве аргумента функции.

Рассмотрим варианты символов, которые распознаются в параметре формат:

Символ в параметре format Описание Пример возвращаемого значения

Функция даты php
День
d День месяца: две цифры с первым нулём от 01 до 31
D День недели в словесном представлении, 3 символа от Mon до Sun
j День месяца без первого нуля от 1 до 31
l (строчная «L») Полное словесное название дня недели от Sunday до Saturday
N Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье)
S Сокращение порядкового числительного дня месяца: два символа st, nd, rd или
th. Применяется вместе с j
w Порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 0) От 0 до 365
Неделя
W Порядковый номер недели года: недели начинаются с понедельника 33 (33-я неделя года)
Месяц
F Полное словесное название месяца, например May от January до December
m Порядковый номер месяца с первым нулём от 01 до 12
M Сокращенное словесное название месяца: три символа от Jan до Dec
n Порядковый номер месяца без первого нуля от 1 до 12
t Количество дней в указанном месяце от 28 до 31
Год
L Указывает на високосный год 1, если год високосный, иначе 0.
o Номер года 1999 или 2003
Y Порядковый номер года: четыре цифры 1998, 2008
y Номер года: две цифры 98, 08
Функции времени php
a Ante meridiem (с англ. «до полудня») или Post meridiem (с англ. «после полудня») am или pm
A Ante meridiem или Post meridiem заглавными буквами AM или PM
B Время в формате Интернет-времени от 000 до 999
g Часы в 12-часовом формате без первого нуля от 1 до 12
G Часы в 24-часовом формате без первого нуля от 0 до 23
h Часы в 12-часовом формате с первым нулём от 01 до 12
H Часы в 24-часовом формате с первым нулём от 00 до 23
i Минуты с первым нулём от 00 до 59
s Секунды с первым нулём от 00 до 59
u Микросекунды Например, 654321
v Миллисекунды Например, 654
Временная зона
e Код шкалы временной зоны Например, UTC, GMT
I (заглавная i) Признак летнего времени 1, если дата соответствует летнему времени, 0 в противном случае.
Полная дата/время
c Дата в формате, указанном в примере 2006-05-12T15:19:21+00:00
r Дата в формате, указанном в примере Например: Thu, 23 Dec 2010 18:05:07 +0200
U Количество секунд, прошедших с начала Эпохи Unix (с 1 января 1970 00:00:00 GMT)

Пример:

1
2
3
4
5
6
7
8
// выведет день недели в формате: Saturday
echo date("l");
 
// выведет дату в формате 2017-01-28
echo date('Y-m-d');
 
// выведет дату и время в формате: Saturday 8th of August 2016 06:13:44 PM
echo date('l jS \of F Y h:i:s A');

Функция time и mktime в php

time — возвращает количество секунд, прошедших с начала Эпохи Unix (c 1 января 1970 00:00:00 GMT) до текущего времени

Функция не предназначена для вывода результата в виде даты или времени, а используется совместно с другими функциями.
Пример использования функции в «чистом виде»:

$now = time(); // метка текущей даты
echo $now; // выведет что-то типа 1485618140
 
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24 часа; 60 минут; 60 секунд
echo $nextWeek; // выведет что-то типа 1486222940

Функция используется совместно с функцией date():

Пример: вывести текущую дату (два способа) и затем дату, которая должна быть ровно через неделю

Выполнение:

1
2
3
4
5
6
7
8
9
10
11
$now = time();
$nextWeek = time() + (7 * 24 * 60 * 60);
 
// Сейчас: 2017-01-28                   
echo 'Сейчас: '. date('Y-m-d') ."\n";
 
// Сейчас: 2017-01-28                   
echo 'Сейчас: '. date('Y-m-d', $now) ."\n";
 
// Следующая неделя: 2017-02-04
echo 'Следующая неделя: '. date('Y-m-d', $nextWeek) ."\n";

Функция используется совместно с функцией mktime:

mktime — возвращает метку времени Unix для указанной даты

Аргументы:

int mktime ([ int $hour = date("H") [, int $minute = date("i") 
[, int $second = date("s") [, int $month = date("n") 
[, int $day = date("j") [, int $year = date("Y") 
[, int $is_dst = -1 ]]]]]]] )

Аргументы могут быть опущены в порядке справа налево.

функции mktime и date в php
Рис. 6.1. Использование функции mktime и date
Пример: вывести на экран текущие полную дату и время, затем дату и время завтрашнего дня, следующего месяца того же дня и той же даты прошлого года

Выполнение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Вывод текущей даты и времени
echo date("r"); //Sat, 28 Jan 2017 19:58:45 +0400
 
// создаем метку для "завтра"
$tomorrow = mktime(0,0,0,date("m"),date("d")+1, date("Y"));
echo date("r", $tomorrow); // Sun, 29 Jan 2017 00:00:00 +0400
 
// создаем метку для "следующий месяц"
$nextmonth = mktime(0,0,0,date("m")+1,date("d"), date("Y"));
echo date("r", $nextmonth ); //Tue, 28 Feb 2017 00:00:00 +0400
 
// создаем метку для "прошлый год"
$lastyear= mktime(0,0,0,date("m")+1,date("d"), date("Y")-1);
echo date("r", $lastyear); //Sun, 28 Feb 2016 00:00:00 +0400
Задание php 6_1:

Задание 1

  1. Создайте строковую переменную now
  2. Создайте строковую переменную birthday
  3. Присвойте переменной now значение метки времени актуальной даты (сегодня)
  4. Присвойте переменной birthday значение метки времени Вашего дня рождения

Задание 2

  1. Выведите фразу «До моего дня рождения осталось «
  2. Выведите количество секунд, оставшееся до Вашего дня рождения
  3. Закончите фразу » секунд»

Дополните код:

1
<!--?php ... ... ?-->

Использование функций даты и времени

 

Лабораторная работа:
Часики

  1. Создайте строковую переменную now.
  2. Присвойте переменной now значение метки времени актуальной даты (сегодня).
  3. Создайте переменную $H и присвойте ей значение часов, выделенных из значения переменной $now.
  4. Создайте переменную $i и присвойте ей значение минут, выделенных из значения переменной $now.
  5. Показывать текущее время в виде: … часов…мин . Изменять окончание слова часов/часа/час в зависимости от кол-ва часов и минут.

Напоминание:
Time() – возвращает текущее время
Date(format,время) – возвращает время, заданного вторым параметром в указанном формате:

  • Часы – H
  • Минуты – i

Функция getdate в php

Функция getdate возвращает информацию о дате и/или времени

getdate ([$timemetka])
  • Возвращается ассоциативный массив с информацией о параметре timemetka, который представляет собой метку времени.
  • Если параметр не использовать, то будет взято текущее локальное время.

Индексы ассоциативного массива:

Индекс Описание Пример значения
seconds Числовое представление секунд от 0 до 59
minutes Числовое представление минут от 0 до 59
hours Числовое представление часов от 0 до 23
mday Порядковый номер дня месяца от 1 до 31
wday Порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
mon Порядковый номер месяца от 1 до 12
year Номер года, 4 цифры Примеры: 1999, 2003
yday Порядковый номер дня в году от 0 до 365
weekday Полное наименование дня недели от Sunday до Saturday
month Полное наименование месяца, например, January или March от January до December
0 Количество секунд, прошедших с начала Эпохи Unix В большинстве случаев от
-2147483648 до 2147483647.
Пример: вывести подробные сведения о текущей дате в формате массива

Выполнение:

1
2
$today = getdate();
print_r($today);

Результат:

Array ( 
  [seconds] => 54 
  [minutes] => 28 
  [hours] => 22 
  [mday] => 28 
  [wday] => 6 
  [mon] => 1 
  [year] => 2017 
  [yday] => 27 
  [weekday] => Saturday 
  [month] => January 
  [0] => 1485628134 
)