Моя цель – создать временную метку каждой минуты между двумя заданными датами (фактическая проблема отличается, но она похожа на структуру и проще описать). Я использую следующий код: $Interval = DateInterval::createFromDateString('1 minute'); $Period = new DatePeriod('2013-01-01', $Interval, '2014-01-01'); foreach ($Period as $Dt){ echo "Minute" . $Dt->format('i'); } Проблема в том, когда я запускаю это, я ожидаю […]
Во время игры с PHP я поразил это: <?php $FebruaryTheFirst = \DateTime::createFromFormat('Ymd H:i:s', '2001-02-01 00:00:00'); $MarchTheSecond = \DateTime::createFromFormat('Ymd H:i:s', '2001-03-01 00:00:00'); $interval = $FebruaryTheFirst->diff($MarchTheSecond); echo $interval->m.PHP_EOL; // Outputs 0. WTF? $FebruaryTheFirstbis = \DateTime::createFromFormat('Ym-d', '2001-02-01'); $MarchTheSecondbis = \DateTime::createFromFormat('Ym-d', '2001-03-01'); $interval2 = $FebruaryTheFirstbis->diff($MarchTheSecondbis); echo $interval2->m.PHP_EOL; // Outputs 1. WTF? $FebruaryTheFirstter = \DateTime::createFromFormat('Ymd H:i:s', '2001-02-01 00:01:00'); $MarchTheSecondter = […]
Я знаю, что эта тема довольно измучена, но, очевидно, недостаточно! $temp_d1 = new DateTime(date('Ym-d', $fromTime)); // 2012-01-01 $temp_d2 = new DateTime(date('Ym-d', $endTime)); // 2013-02-01 $interval = $temp_d2->diff($temp_d1); $monthsAhead = $interval->format('%m'); // returns 1, but I am expecting 13 Как вы рассчитываете количество месяцев между двумя датами без упаковки в пределах 12-месячной шкалы?
Я использую следующий код: public static function getDays($day, $m, $y) { $days = new DatePeriod( new DateTime("first $day of $m $y"), DateInterval::createFromDateString('next ' . $day), new DateTime("last day of $m $y") ); foreach ($days as $day) { $dates[] = $day->format("Ymd"); } return $dates; } Это работает по большей части. Я даю ему диапазон, и он […]
Я хочу добавить два интервала дат для вычисления общей продолжительности в часах и минутах на самом деле, я хочу выполнить добавление, как показано ниже: $a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1 : " . $interval1->format("%H:%I"); echo "<br />"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = […]
Я обнаружил, что объект DateTime в PHP можно сравнить с другим, поскольку операторы «>» и «<» перегружены. То же самое с DateInterval? Когда я пытался ответить на этот вопрос, я нашел что-то странное: <?php $today = new DateTime(); $release = new DateTime('14-02-2012'); $building_time = new DateInterval('P15D'); var_dump($today->diff($release)); var_dump($building_time); var_dump($today->diff($release)>$building_time); var_dump($today->diff($release)<$building_time); if($today->diff($release) < $building_time){ echo 'oK'; […]
Я попытался использовать date_diff и date_create, чтобы получить разницу с двумя датами, которые уже были преобразованы в строку. вот код: $date_1 = date_create(); $date_now = date_format($date_1, 'Ym-d'); //echo $date_now . "\n"; $date=date_create($date_now); date_add($date,date_interval_create_from_date_string("3 days")); $date_return = date_format($date,"Ymd"); $diff = date_diff(date_create($date_now), date_create($date_return)); echo $diff; и я получаю эту ошибку: Object of class DateInterval could not be […]
Если у меня есть формат времени, например «14:30:00» («часы: минуты: секунды»), как мне получить DateInterval из строки? Я могу получить DateTime: $datetime= DateTime::createFromFormat("H:i:s","14:30:00"); Но мне нужно добавить его к другому объекту DateTime, а date_add нужен DateInterval.
Мне не удалось найти правильное решение этой проблемы. Как вы видите в примере №3 в документации PHP, они заявляют, что нужно быть осторожным при добавлении месяцев с использованием DateInterval в DateTime :: add. На самом деле нет никакого объяснения, почему поведение метода как таковое и что я могу сделать, чтобы этого избежать, что на первый […]