Содержание учебника по PHP
time()
— Возвращает текущий момент времени в формате timestamp. Формат timestamp — это количество секунд, прошедшее с 1-го января 1970 года по заданный момент времени.
mktime()
— Переводит заданную дату в формат timestamp.
1 2 3 4 5 |
/* mktime(часы, минуты, секунды, месяц, день, год); */ echo mktime(12, 59, 59, 31, 12, 2025); // Вывод: 1767182399 |
date()
— Выводит дату в заданном формате. 1-м параметром функция принимает формат, а 2-м необязательным параметром — момент времени в формате timestamp. Если 2-й параметр не указан — возратится текущий момент времени, если указан — то заданный.
Формат задается управляющими командами (английскими буквами), при этом можно вставлять любые разделители между ними (двоеточие, дефисы и т.п.).
Функция date()
принимает следующие команды (заглавные буквы отличаются от обычных):
- U – количество секунд, прошедших с 1 января 1970 года (то есть timestamp)
- z – номер дня от начала года
- Y – год, 4 цифры
- y — год, две цифры
- m – номер месяца (с нулем)
- n – номер месяца без нуля
- d – номер дня в месяце, всегда две цифры (т.е. первая может быть нулем)
- j – номер дня в месяце без нуля
- w – день недели (0 — Вс, 1 — Пн т.д.)
- h – часы в 12-часовом формате
- H – часы в 24-часовом формате
- i – минуты
- s – секунды
- L – 1, если високосный год, 0, если не високосный
- W – порядковый номер недели года
- t – количество дней в указанном месяце
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* date(формат, [момент времени в формате timestamp]); */ // Для даты 08-06-2022 среда echo date('Y'); // выведет '2022' echo date('y'); // '22' echo date('m'); // '06' - номер месяца echo date('d'); // '08' - номер дня в месяце echo date('j'); // '8' - номер дня в месяце (без нуля) echo date('w'); // '3' - среда echo date('H'); // '09' - часы echo date('i'); // '14' - минуты echo date('s'); // '57' - секунды echo date('d-m-Y'); // выведет '08-06-2022' echo date('d.m.Y'); // '08.06.2022' echo date('H:i:s d.m.Y'); // '09:20:25 08.06.2022' // Выведем дату 21-06-1999 echo date('d-m-Y', mktime(0, 0, 0, 06, 21, 1999)); // выведет '21-06-1999' echo '<br>'; // Узнаем какой день недели был 01-10-2017 echo date('w', mktime(0, 0, 0, 10, 01, 2017)); // '0' - воскресенье |
strtotime()
— преобразует произвольную дату в формат timestamp. Форматы аргумента: ‘2024-11-30′, ’11 September 2004’, ‘Tomorrow’.
1 2 3 4 5 6 7 8 9 |
/* strtotime(дата); */ echo strtotime('2024-11-30'); // Вывод: 1732921200 echo strtotime('11 September 2004'); // Вывод: 1094853600 echo strtotime('Tomorrow'); // Вывод (на 08/06/2022): 1654725600 |
date_create()
— создает объект ‘дата’, с которым далее можно выполнять некоторые операции функциями date_modify() (прибавить или отнять промежуток от даты) и date_format() (вывести дату в другом формате).
1 2 3 4 5 6 7 8 |
$date = date_create('2030-10-22'); echo date_format($date, 'Y-m-d'); // Вывод: 2030-10-22 $date = date_create('2000-01-01'); date_modify($date, '6 day'); echo date_format($date, 'd.m.Y'); // Вывод: 07.01.2000 |
date_modify()
— позволяет прибавлять и отнимать от даты определенные промежутки времени. При этом дата должна быть объектом, созданным функцией date_create. Функция изменяет и возвращает сам переданный объект ‘дата’.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/* date_modify(объект 'дата', что прибавить или отнять); */ $date = date_create('2020-08-25'); date_modify($date, '3 day'); echo date_format($date, 'd.m.Y'); // Вывод: 28.08.2020 /* */ $date = date_create('1999-11-01'); date_modify($date, '5 days 2 month'); echo date_format($date, 'd.m.Y'); // Вывод: 06.01.2000 /* */ $date = date_create('2022-08-06'); date_modify($date, '-2 day'); echo date_format($date, 'd.m.Y'); // Вывод: 04.08.2022 |
date_format()
— выводит данные из объекта ‘дата’ в определенном формате. При этом дата должна быть объектом, созданным функцией date_create. Управляющие команды для формата аналогичны, как в функции date.
1 2 3 4 5 6 7 |
/* date_create(объект 'дата', формат вывода); */ $date = date_create('1990-01-01'); date_modify($date, '7 day'); echo date_format($date, 'd.m.Y'); // 08.01.1990 |
Задачи по функциям Времени и Даты в PHP
Примеры задач взяты из code.mu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
<title>pp.Pm.IB.Tm-70-64</title> <b>№1<br>Выведите текущее время в формате timestamp.</b><br> <br><b>Решение</b><br> <?php echo time(); ?> <br><br> <b>№2<br>Выведите 1 марта 2025 года в формате timestamp.</b><br> <br><b>Решение</b><br> <?php echo mktime(0, 0, 0, 03, 01, 2025); ?> <br><br> <b>№3<br>Выведите 31 декабря текущего года в формате timestamp. Скрипт должен работать независимо от года, в котором он запущен.</b> <br><br> <b>Решение</b><br> <?php $year1 = date('Y'); $year = mktime( 0,0,0,12,31, $year1 ); echo $year; ?> <br><br> <b>№4<br>Найдите количество секунд, прошедших с 13:12:59 15-го марта 2000 года до настоящего момента времени.</b> <br><br> <b>Решение</b><br> <?php $today_date = time(); $once_date = mktime('13', '12', '59', '03', '15', '2000'); echo $today_date - $once_date; ?> <br><br> <b>№5<br>Найдите количество целых часов, прошедших с 7:23:48 текущего дня до настоящего момента времени.</b> <br><br> <b>Решение</b><br> <?php $now_date = time(); $now_Y = date('Y', $now_date); $now_m = date('m', $now_date); $now_d = date('d', $now_date); $time_1 = mktime(7, 23, 48, $now_m, $now_d, $now_Y); $time_2 = $now_date - $time_1; echo date('h', $time_2); ?> <br><br> <b>№6<br>Выведите на экран текущий год, месяц, день, час, минуту, секунду.</b> <br><br> <b>Решение</b><br> <?php echo date( 'Y-m-d-h-i-s', time()); ?> <br><br> <b>№7<br>Выведите текущую дату-время в форматах 2025-12-31, 31.12.2025, 31.12.13, 12:59:59.</b> <br><br> <b>Решение</b><br> <?php echo date( 'Y-m-d', time()) . '<br>'; echo date( 'd.m.Y', time()) . '<br>'; echo date( 'd.m.y', time()) . '<br>'; echo date( 'h:i:s', time()) . '<br>'; ?> <br><br> <b>№8<br>С помощью функций mktime и date выведите 12 февраля 2025 года в формате 12.02.2025.</b> <br><br> <b>Решение</b><br> <?php echo date('d.m.Y', mktime(0, 0, 0, 02, 12, 2025)); ?> <br><br> <b>№9<br>Создайте массив дней недели. С помощью этого массива и функции date выведите на экран название текущего дня недели. Узнайте какой день недели был 06.06.2006, в ваш день рождения.</b> <br><br> <b>Решение</b><br> <?php $arr = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб']; echo 'Текущий день недели - ' . $arr[ date('w', time()) ] . '<br>'; echo 'Текущий день недели 05.01.2022 - ' . $arr[ date('w', mktime(0, 0, 0, 1, 5, 2022)) ] . '<br>'; ?> <br><br> <b>№10<br>Создайте массив месяцев. С помощью этого массива и функции date выведите на экран название текущего месяца.</b> <br><br> <b>Решение</b><br> <?php $arr_month = ['0', 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']; echo 'Текущий месяц - ' . $arr_month[ date('n', time()) ]; ?> <br><br> <b>№11<br>Найдите количество дней в текущем месяце. Скрипт должен работать независимо от месяца, в котором он запущен.</b> <br><br> <b>Решение</b><br> <?php echo date('t', time()); ?> <br><br> <b>№12<br>Дана дата в формате 2025-12-31. С помощью функции strtotime и функции date преобразуйте ее в формат 31-12-2025.</b> <br><br> <b>Решение</b><br> <?php echo date('d-m-Y', strtotime('2025-12-31')); ?> <br><br> <b>№13<br>В переменной $date лежит дата в формате 2025-12-31. Прибавьте к этой дате 2 дня, 1 месяц и 3 дня, 1 год. Отнимите от этой даты 3 дня.</b> <br><br> <b>Решение</b><br> <?php $date = '2025-12-31'; $date_1 = date_create($date); $date_2 = date_create($date); $date_3 = date_create($date); $date_4 = date_create($date); date_modify($date_1, '2 day'); date_modify($date_2, '3 day 1 month'); date_modify($date_3, '1 year'); date_modify($date_4, '-3 day'); echo date_format($date_1, 'Y.m.d') . '<br>'; echo date_format($date_2, 'Y.m.d') . '<br>'; echo date_format($date_3, 'Y.m.d') . '<br>'; echo date_format($date_4, 'Y.m.d') . '<br>'; ?> <br><br> <b>№14<br>Узнайте сколько дней осталось до Нового Года. Скрипт должен работать в любом году.</b> <br><br> <b>Решение</b><br> <?php $today = mktime(0, 0, 0, date( 'm', time() ), date( 'd', time() ), date( 'Y', time() )); /* $today = mktime(0,0,0,12,20,2022);*/ $date = date('Y', $today); $date = date_create($date); date_modify($date, '1 year'); $next_year = date_format($date, 'Y'); $next = mktime(0, 0, 0, 01, 01, $next_year); $do_new_year = ($next - $today) / 3600 / 24; echo date('d-m-Y', $today) . '<br>'; echo date('d-m-Y', $next) . '<br>'; echo round($do_new_year) . ' дней осталось до Нового Года'; ?> <br><br> <b>№15<br>Пусть в переменной содержится некоторый год. Найдите все пятницы 13-е в этом году. Результат выведите в виде массива дат.</b> <br><br> <b>Решение</b><br> <?php $year = 2023; $friday_13 = []; $date = date_create( $year . '-01-13' ); for ( $i=0; $i <= 11; $i++ ){ if ( date_format($date, 'w') == 5 ){ $friday_13[] = date_format($date, 'Y-m-d'); } date_modify($date, '1 month'); } echo 'Год: ' .$year . '<br>'; print_r($friday_13); ?> <br><br> <b>№16<br>Узнайте какой день недели был 100 дней назад.</b> <br><br> <b>Решение</b><br> <?php $minus_days = 100; $now = date('Y-m-d', time()); $date = date_create($now); date_modify($date, '-' . $minus_days . ' day'); echo date_format($date, 'Y-m-d'); ?> |