PHP формат дати, AlexGur

Робота з датою у програмуванні - одне з найнудніших завдань. Тому що існує багато форматів дати. Починаючи від православного "день. місяць. рік", закінчуючи неадекватним американським форматом "місяць-день-рік". Наведу пакет прикладів найбільш затребуваних функцій для роботи з датою в PHP.
Виведення поточної дати
Функція для виведення дати date() може виводити дату в різних форматах. Один з найбільш популярних у мене: "день. місяць. рік година: хвилина: секунда". Щоб вивести дату в такому форматі, необхідно передати функції даті такий рядок:
Повний опис усіх значків у рядку дивіться у цій таблиці:
Додати до поточної дати день/тиждень/місяць/рік
Щоб додати/відібрати від поточної дати дні/місяць/тиждень, можна використовувати таку конструкцію:
$d = date('d.m.Y H:i:s', strtotime(date('Y-m-d H:i:s') . '+1 day'))); $d = date('d.m.Y H:i:s', strtotime(date('Y-m-d H:i:s') . '-1 week')); $d = date('d.m.Y H:i:s', strtotime(date('Y-m-d H:i:s') . '+1 year'));
У другому аргументі функції стоять "+1 day", "-1 week" тощо. Вони змінюють дату, додаючи/забираючи різні періоди. Їх можливі значення: year, month, week, days, hours, seconds.
Щоб формат, що виводиться, відповідав потребам, змініть його в першому аргументі 'd.m.Y H:i:s'.
Можна додавати відразу кілька періодів одночасно:
$d = date('d.m.Y', strtotime(date('Y-m-d') . ' +1 year 1 week 2 days')));
Отримати минулого понеділка
У PHP можна легко отримати дату минулого чи цього понеділка. І тому існує клас DateTime.
$date = new DateTime('monday this week'); $thismonday = $date->format('d.m.Y');
Така конструкція присвоїтьзмінної $thismonday дату понеділка цього тижня. Щоб отримати дату понеділка минулого тижня, необхідно 'monday this week' замінити на 'monday last week'.
Отримати всі понеділки між датами
Іноді потрібно отримати всі понеділки між двома датами. У цьому завдання допоможе клас DatePeriod та DateInterval у поєднанні з хитрістю форматування дати. Розберемо з прикладу.
Зробимо цикл для отримання всіх понеділків між двома заданими:
$dt->format('N') дає порядковий номер дня тижня. Для понеділків це "1".