Здравствуйте. Никак не могу понять особенности механики работы gmdate(). Код (Text): $ddd = strtotime("10.02.2024 14:14:00") - strtotime("27.01.2024 05:20:00"); $ttt = 24*60*60; $ttt += 5*60*60; $ttt += 6*60; $ttt += 10; $new_date = gmdate("Y-m-d H:i:s", strtotime("11.02.2024 19:08:10") + $ddd + $ttt + 10800); $new_date2 = gmdate("Y-m-d H:i:s", strtotime("11.02.2024 19:08:10") + (($ddd + $ttt)*3 + 10800)/4); С учётом сдвига часового пояса на 3ч(10800сек) обе переменные $new_date, $new_date2 отображают правильные значения 2024-02-27 09:08:20 и 2024-02-23 09:23:17 . Однако не могу понять: по идее для new_date2 прибавка 3ч должна производиться целиком, а не частично. Как так?
Похоже не правильно проверяю даты. На малых числах $new_date2 требует оформления как и $new_date: Код (Text): $new_date2 = gmdate("Y-m-d H:i:s", strtotime("11.02.2024 19:08:10") + ($ddd + $ttt)*3/4 + 10800);
Немного монолог...Извиняюсь за это. Долго не могла разобраться как даты эти проверить, т.к. считать вручную казалось сложным, а написать Код (Text): echo (strtotime($new_date2) - strtotime("11.02.2024 19:08:10"))/(strtotime($new_date) - strtotime("11.02.2024 19:08:10")); чтобы проверить соотношение не хватало ума.
Добрый день! PHP 8 Ваш скрипт выдаёт ошибку Это непринципиално, т.к. без всей этой арифметики можно обойтись использую формат в strtotime или в методе modify класса DateTime, например, "+3 hours" PHP: $f1 = "Y-m-d H:i:s"; $f2 = "+3 hours"; $baseTime = strtotime("11.02.2024 19:08:10"); $new_date = gmdate($f1, $baseTime); echo "$new_date<br>"; $new_date = gmdate($f1, strtotime($f2, $baseTime)); echo "$new_date<hr>"; ################################################ //Альтернатива $new_date = new DateTime("11.02.2024 19:08:10"); $new_date -> setTimezone(new DateTimeZone('GMT')); echo $new_date -> format($f1),"<br>"; echo $new_date -> modify($f2) -> format($f1); Удачи!