Задачи по PHP. Работа с датой и временем

Работа с датой и временем в PHP

арифметика

перейти к содержанию задачника

Во всех задачах по умолчанию использовать Carbon или DateTime

  1. Дано количество секунд. Определить, сколько это дней, часов, минут.
  2. Создать carbon-объект для ‘22.10.2017’. Показать на экран в формате ‘d-m-Y’. Увеличить дату на 10 дней. Изменить время на 10 часов 30 мин 15 сек. Показать дату на экран в формате ‘d/m/Y H:i:s’. 
  3. Дано две даты. Вывести ту, которая раньше, в формате ‘день-месяц (год)’
  4. Вывести, сколько дней в текущем месяце.
  5. Дан номер месяца текущего года. Вывести все его даты.
  6. Дана дата. Вывести, сколько дней до нее осталось (или сколько дней прошло). 
  7. Вывести все прошедшие понедельники текущего года.
  8. Дана дата. Сгенерировать расписание с этой даты на 30 дней по такому принципу: сутки через трое. Если рабочий день приходится на воскресенье, то он переносится на понедельник.  В итоге показать даты рабочих дней.  
  9. Помогите репетитору по английскому. Урок длится 45 минут, перерыв между уроками 10 мин. Репетитор говорит время начала работы и время окончания работы (в рамках одного дня). Сгенерируйте расписание уроков. Например, 10:00 – начало, 18:00 – окончание. Расписание: 10:00 – 10:45, 10:55 – 11:40 и т.д. Если урок обрывается временем окончания работы, то не добавлять его в расписание.
  10. Дан режим работы интернет-магазина. ПН 9:00 – 21:00 ВТ 9:00 – 21:00 СР 9:00 – 21:00 ЧТ 9:00 – 21:00 ПТ 9:00 – 21:00 СБ 10:00 – 18:00 ВС 10:00 – 18:00. И даны дата и время. Определить, работает ли в это время магазин и сколько минут до конца рабочей смены.
  11. Дан массив периодов дат (временные затраты сотрудника на выполнение задач менеджера). Например, $dates = [[‘start’=>’02.10.2017 10:12:11’, ‘end’=>’02.10.2017 15:20:11’], [‘start’=>’03.10.2017 13:12:11’, ‘end’=>’03.10.2017 16:40:40’]]; То есть это многомерный массив, каждый элемент – массив с двумя датами в формате ‘d.m.Y H:i:s’. Найти, сколько всего часов потрачено сотрудником (в формате N час K мин).
  12. Дан массив дат бронирования номера в отеле. Элемент массива или одна дата, или период – две даты через дефис. Пример: $dates = [‘12.09.2017’, ‘14.09.2017-02.10.2017’]; Выяснить можно ли добавить в массив данную дату или период для нового бронирования. Например, для указанного выше примера период ‘01.10.2017-05.10.2017’ добавлять нельзя, так как первые два дня уже забронированы.
  13. Есть несколько человек. Про каждого известно, когда он ходит в кафе: в какой день недели и в какое время (например, пн – 12-00, чт – 14-20). Петя не хочет встретиться ни с кем из них. Он запланировал сходить в кафе в чт в 15-00. Определите, стоит ли идти Пете в запланированное время, если встреча случается при разнице не более 20 минут между посещениями (например, пн 12-00 и пн – 12-20 – эти два человека встретятся в кафе).
  14. Петя засомневался в верности своей девушки. У Пети есть список ее телефонных разговоров за последний месяц в виде [[‘11.02.2024 12:33:40’, ‘11.02.2024 12:56:01’], [‘12.02.2024 11:30:40’, ‘12.02.2024 11:34:20’], …]. То есть массив из периодов с началом и окончанием каждого разговора. Такой же список есть про каждого из друзей девушки (друзья могут разговаривать не только с девушкой). Погрешность определения начала разговора и окончания разговора составляет 10 секунд.  Выведите список друзей девушки, с которыми она могла разговаривать ночами с 01-00 до 3-00. Выведите топ 3 друга, с которыми она могла разговаривать дольше всего.
  15. Петя смотрит каталог онлайн-курсов по программированию. Про каждый курс известны даты и время проведения его уроков. а) Может ли Петя выбрать три курса из каталога так, чтобы уроки не пересекались? б) На каждый урок курса Петя хочет выделить 3 часа времени на домашнее задание (кроме собственно самого урока). Домашнее задание он хочет делать сразу после урока. Сможет ли Петя выбрать три курса так, чтобы успевать делать домашнее задание и чтобы уроки не пересекались?

перейти к содержанию задачника