PHP относительные даты. Как обозначить например третий вторник месяца, или последний четверг месяца, или первый понедельник месяца?

Подскажите пожалуйста, как обозначить в базе и на PHP относительные даты? Например праздник празднуется во второе воскресение декабря...
Как быть с такими относительными датами?

Заранее благодарю!
  • Вопрос задан
  • 253 просмотра
Решения вопроса 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
echo date('d.m.y', strtotime('third tuesday of this month'));

https://www.php.net/manual/ru/function.strtotime.php
https://www.php.net/manual/ru/datetime.formats.rel...

как обозначить в базе

Что значит обозначить даты в базе?
Заранее записываете нужные высчитанные нужным способом
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Для php вам Александр Аксентьев написал
а в базе второе воскресенье получить можно вот так (на примере MySQL)
-- если задавать год вручную
-- SET @thisYear = '2019';
-- SET @thisYearDecemberBegin = CONCAT(@thisYear, '-12-01');

-- декабрь этого года
SET @thisYearDecemberBegin = CONCAT(YEAR(NOW()), '-12-01');

SELECT DATE_ADD(@thisYearDecemberBegin 
 , INTERVAL
 ( ( 8 - DAYOFWEEK(@thisYearDecemberBegin) ) % 7 ) + 7
 DAY
 ) AS second_sunday_of_month;

можно это все в хранимку завернуть.
Вот тут хорошие примеры для разных СУБД.

С последним днем похожая история - DAYOFWEEK() LAST_DAY() и немножко арифметики.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы