phphleb / calendar-stub
Solving the problem with calendar calculations in PHP
1.0.0
2024-11-24 22:04 UTC
Requires
- php: >=7.3.0
README
Генерация объекта даты начала или окончания периода, заданного по названию.
Решает проблему точных календарных дат в DateTime, при которой, например,
значение (new DateTime('2017-01-31'))->modify('+1 month')->format('Y-m-d')
равно "2017-03-03"
а не "2017-02-28".
Установка
$ composer require phphleb/calendar-stub
Использование
use Phphleb\CalendarStub\DateNameToPeriodConverter; $converter = new DateNameToPeriodConverter(); // Получение даты за календарный месяц назад от текущего времени. // Возможные значения периода: 'day', 'week', 'month', 'quarter', 'year', 'all' // Период может быть кратным, например '2 months'. // Методы getStartDate и getEndDate возвращают объект DateTime. $date = $converter ->setPeriodName('month') ->getStartDate() ->format('Y-m-d H:i:s'); // Получение даты два календарных месяца назад от текущего времени. $date = $converter ->setPeriodName('2 months') ->getStartDate() ->format('Y-m-d H:i:s'); // Получение даты два календарных месяца вперед от текущего времени. $date = $converter ->setPeriodName('2 months') ->setStartDate(new DateTime()) ->getEndDate() ->format('Y-m-d H:i:s'); // Получение даты два календарных месяца назад от заданного времени (28го февраля 2017). $endPeriod = new DateTime('2017-02-28 00:00::00'); $date = $converter ->setPeriodName('2 months') ->setEndDate($endPeriod) ->getStartDate() ->format('Y-m-d H:i:s'); // При задании периода "all" ничего не рассчитывается, так как возвращается или // start date от начала UNIX Time, так и уже установленная end date или текущее время. $date = $converter ->setPeriodName('all') ->getEndDate() ->format('Y-m-d H:i:s');