Урок 11. Задачи на даты в PHP

Урок 11. Задачи на даты в PHP

Создание и раскрутка сайтов

Вбиваю в ТОП-10, как гвозди

8-965-148-98-02, diplom07@mail.ru

Создание и раскрутка сайтов

Вбиваю в ТОП-10, как гвозди

8-965-148-98-02, diplom07@mail.ru

Урок 11. Задачи на даты в PHP

Урок 11. Задачи на даты в PHP

www.homa.xp3.biz

Практика

Примеры решения задач

Задача

Вывести 23.9.2031 12:58:59 в формате timestamp.

Решение: функция mktime (сентябрь - 9-й месяц):

<?echo mktime(12,58,59,9,23,2031)/*Месяц и день идут в американском порядке: поэтому '9,23,' а не '23,9'.*/?>

1947923939

Можно также воспользоваться функцией strtotime, если представить нужную дату в формате 2031-09-23 12:58:59:

<?echo strtotime('2031-09-23 12:58:59')?>

1947923939

Задача

Найти разницу между 1.9.2010 7:25:59 и текущим моментом времени в секундах.

Решение: текущий момент времени в формате timestamp получим с помощью функции time, а timestamp для заданной даты - с помощью функции mktime. Отнимем одно число от второго и получим искомую разницу:

<?echo time()-mktime(7,25,59,9,1,2010)?>

317957684

Задача. Функция date

Вывести текущую дату-время в формате '2025.12.31 12:59:59'.

Решение: воспользуемся функцией date, передав ей управляющие команды в таком порядке: год (команда Y), потом точку как символ, потом месяц (команда m), опять точку, день (команда d), час (команда H), двоеточие, минуту (команда i), секунду (команда s). Получится такая строка: 'Y.m.d H:i:s'. Подставим ее в функцию date:

<?echo date('Y.m.d H:i:s')?>

2020.09.28 09:00:43

Задача. Функция date

Вывести 1 сентября текущего года в формате '2020.09.01'.

Решение: для начала с помощью функции mktime преобразуем 1 сентября текущего года в формат timestamp. Мы это делаем для того, чтобы подставить найденное число вторым параметром в функцию date (а первым параметром для date мы укажем формат вывода).

Т.к. требуется текущий год, то последний параметр (год) для mktime мы не указываем, тогда возьмется текущий год:

<?/*Выведем timestamp 1 сентября текущего года:*/echo mktime(0,0,0,9,1)?>

1598907600

Теперь подставим найденный timestamp в функцию date:

<?echo date('Y.m.d',mktime(0,0,0,9,1))?>

2020.09.01

Задача. Функция date. Вывод дня недели текстом

Узнать, какой день недели (текстом) был 1.9.2010г.

Решение: решение аналогично предыдущей задаче, только формат вывода для функции date мы сделаем в виде 'w'. В этом случае date вернет нам число, соответствующее дню недели за заданную дату (0 - воскресенье, 1 - понедельник и так далее):

<?/*День недели числом за нужную дату:*/echo date('w',mktime(0,0,0,9,1,2010))?>

3

Кстати, если бы мы хотели узнать, какой день недели сегодня, мы бы просто не передавали 2-й параметр функции date (тогда бы взялся текущий момент времени и, соответственно, вывелась бы 'w' за текущий день).

Продолжим. Мы вывели номер дня недели, а по задаче его следует вывести текстом. Для этого составим массив дней недели $w и с его помощью выведем то, что нам нужно. Вот этот массив:

<?/*Массив дней недели:*/$w=['вс','пн','вт','ср','чт','пт','сб'];/*Выведем с его помощью, к примеру, понедельник:*/echo$w[1];/*А теперь вторник:*/echo$w[2]?>

пнвт

Совместим теперь то, что вернет нам date, с нашим массивом $w:

<?/*День недели цифрой за нужную дату:*/$d=date('w',mktime(0,0,0,9,1,2010));/*Массив дней недели:*/$w=['вс','пн','вт','ср','чт','пт','сб'];/*День недели словом:*/echo$w[$d]?>

ср

Задача. Преобразование форматов

Дана дата в формате '31-12-2025'. С помощью функций mktime и explode перевести эту дату в формат timestamp.

Решение: разобьем строку '31-12-2025' функцией explode в массив $a:

<?$a=explode('31-12-2025')/*получим ['31','12','2025']*/?>


Warning: explode() expects at least 2 parameters, 1 given in /home/vhosts/homa.xp3.biz/kniga/kniga011/11.php on line 47

В элементе $a[0] будет лежать день, в элементе $a[1] - месяц, в элементе $a[2] - год. Подставим эти данные в функцию mktime (напоминаю, что она принимает данные в формате 'месяц-день-год', не 'день-месяц-год'):

<?$a=explode('31-12-2025');echo mktime(0,0,0,$a[1],$a[0],$a[2])?>


Warning: explode() expects at least 2 parameters, 1 given in /home/vhosts/homa.xp3.biz/kniga/kniga011/11.php on line 50
943912800

Задачи для решения

Timestamp: time и mktime

Для решения задач данного блока понадобятся функции time, mktime.

Вывести текущее время в формате timestamp.

Вывести 1.3.2028 в формате timestamp.

Вывести 31 декабря текущего года в формате timestamp. Скрипт должен работать независимо от года, в котором он запущен.

Найдите количество секунд, прошедших с 13:12:59 15.3.2008 до настоящего момента времени.

Найдите количество целых часов, прошедших с 7:23:48 текущего дня до настоящего момента времени.

Функция date

Для решения задач данного блока понадобится функция date.

Вывести на экран текущий год, месяц, день, час, минуту, секунду.

Вывести текущую дату-время в форматах '2025-12-31', '31.12.2025', '31.12.13', '12:59:59'.

С помощью функций mktime и date выведите 12.2.2025г. в формате '12.02.2025'.

Создать массив дней недели $w. Вывести на экран название текущего дня недели с помощью массива $w и функции date. Узнайте какой день недели был 6.6.2008, в ваш день рождения.

Создать массив месяцев $m. Вывести на экран название текущего месяца с помощью массива $m и функции date.

Найти количество дней в текущем месяце. Скрипт должен работать независимо от месяца, в котором он запущен.

Сделать поле ввода, в которое пользователь вводит год (4 цифры), а скрипт определяет високосный ли год.

Сделать форму, которая спрашивает дату в формате '31.12.2025'. С помощью функций mktime и explode перевести эту дату в формат timestamp. Узнать день недели (текстом) за введенную дату.

Сделать форму, которая спрашивает дату в формате '2025-12-31'. С помощью функций mktime и explode перевести эту дату в формат timestamp. Узнать месяц (текстом) за введенную дату.

Сравнение дат

Сделать форму, которая спрашивает 2 даты в формате '2025-12-31'. 1-ю дату записать в переменную $d, а 2-ю в $e. Сравнить, какая из введенных дат больше. Вывести ее на экран.

На strtotime

Для решения задач данного блока понадобится функция strtotime.

Дана дата в формате '2025-12-31'. С помощью функции strtotime и функции date преобразуйте ее в формат '31-12-2025'.

Сделать форму, которая спрашивает дату-время в формате '2025-12-31T12:13:59'. С помощью функции strtotime и функции date преобразовать ее в формат '12:13:59 31.12.2025'.

Прибавление и отнимание дат

Для решения задач данного блока понадобятся функции date_create, date_modify, date_format.

В переменной $date лежит дата в формате '2025-12-31'. Прибавьте к этой дате 2 дня, 1 месяц и 3 дня, 1 год. Отнимите от этой даты 3 дня.

Задачи

Узнать, сколько дней осталось до Нового Года. Скрипт должен работать в любом году.

Сделать форму с 1 полем ввода, в которое пользователь вводит год. Найти все пятницы 13-е в этом году. Результат вывести в виде массива дат.

Узнать, какой день недели был 100 дней назад.

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович:
8-965-148-98-02, diplom07@mail.ru.
Печатать страницу: Урок 11. Задачи на даты в PHP

Урок 11, Задачи на даты в PHP, Урок, 11, Задачи, на, даты, в, PHP, создание, сайта, веб, заказ, web, дизайн, раскрутка, продвижение, новый, сайт, рейтинг, сео, seo, Создание сайтов, web-программирование, seo-продвижение, создание и раскрутка сайтов, вбиваю в топ-10, как гвозди, попробуйте бесплатно, Создание сайтов, web-программирование, seo-продвижение, Урок, 11, Задачи, на, даты, в, PHP, создание, сайта, веб, заказ, web, дизайн, раскрутка, продвижение, новый, сайт, рейтинг, сео, seo, создание, сайта, веб, заказ, web, дизайн, раскрутка, продвижение, новый, сайт, рейтинг, сео, seo, раскрутка сайтов, Вбиваю в ТОП-10, как гвозди, раскрутка сайтов, Делаю и раскручиваю сайты, Дмитрий Владимирович

×

Ваше письмо