datetime — расчет перехода на летнее время в переполнении стека

В моем приложении у меня есть поле varchar в mysql на 365 дней в определенном формате, т.е. ‘0000-04-12’ (12 апреля) Прямо сейчас у меня есть функция, которая должна проверять, попадает ли конкретная дата из поля в зону перехода на летнее время в Калгари-Канада, которая варьируется от 2:00 вечера Второе воскресенье марта в 14:00 Первое воскресенье ноября. и возвращает истину или ложь соответственно.

<?php
/*
@param $time form Database e.g. 0000-04-12
*/
function isDaylightSaving($time){
// to replace 0000 in start with current year
$today = substr_replace($time,date('Y'),0,4);
$date = new DateTime($today);
$week = $date->format('W');

// TO DO
// find date falls between 2:00 pm Second Sunday of March to 2:00 pm First Sunday of November.

return ;
}

?>

Прямо сейчас это возврат недели относительно определенного года, но мне нужно проверить неделю относительно месяца, чтобы выполнить определенную логику, которую я не могу получить. Спасибо.

0

Решение

Попробуй это:

if($time > date('Y-m-d',strtotime('second sunday of march')) &&
$time < date('Y-m-d',strtotime('first sunday of november'))){
return true;
}else{
return false;
}

strtotime () — отличная функция.

-1

Другие решения

Пример, приведенный @Ezenhis, звучит хорошо, но в нем отсутствуют некоторые элементы.
Расширяя это:

$low = new DateTime('@'.strtotime('second sunday of march'));
$high = new DateTime('@'.strtotime('first sunday of november'));
if($date > $low && $date < $high) {
// we're good
}

Вы не должны сравнивать строки из функций даты. Использование DateTime также является лучшим способом обработки даты / времени в PHP, начиная с PHP 5.0.

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector