год Для отображения сельскохозяйственной продукции, которая доступна в «текущем сезоне», я могу спросить:С конца месяца и в начале месяца, без относительно конкретной
ли ('Y-m-d',strtotime('today'))
больше $start_of_season
и менее $end_of_season
, и до тех пор, дата начала до даты окончания, логика проста.
$date_format = 'Y-m-d';
if ((date_i18n($date_format,strtotime('today')) > date_i18n($date_format,strtotime($start_of_season))) &&
(date_i18n($date_format,strtotime('today')) < date_i18n($date_format,strtotime($end_of_season)))):
# display the produce
Но что, если я хочу игнорировать год и измерять в период с ноября по февраль? Если сегодня 1 декабря, то это больше, чем ноябрь, но это также больше февраля.
Моя первая попытка сказать,
если end_date больше датой_начала
-
- если сегодня во второй половине года
-
-
- Затем вызовите датой_окончания 12-31
-
-
- еще
-
-
- Вызовите start_date 01-01
-
Это код:
$date_format = 'm-d';
if (date_i18n($date_format,strtotime($start_of_season)) > date_i18n($date_format,strtotime($end_of_season))):
if (date_i18n($date_format,strtotime('today')) > date_i18n($date_format,strtotime('2000-06-01'))):
$end_of_season = '2000-12-31';
else:
$start_of_season = '2000-01-01';
endif;
endif;
if ((date_i18n($date_format,strtotime('today')) > date_i18n($date_format,strtotime($start_of_season))) &&
(date_i18n($date_format,strtotime('today')) < date_i18n($date_format,strtotime($end_of_season)))):
который, кажется, "работа" в большинстве случаев.
Но если есть вещь, кто сезон с декабря по июль и текущая дата 1 июля, то есть будет $start_of_season > $end_of_season
, но так как это после того, как 1 июня $end_of_season
будет установлен до 31 декабря, поставив нас вне из «in_season» окно отображения.
Я уверен, что существуют разумные, красноречивые способы сделать это и можно использовать некоторое просветление.
Я не знал о 'modify' метода для объектов DateTime. Это действительно приятное предложение. Адаптируйте его и высоко оценили. – MikeiLL