добавление военного времени в строковое представление - PullRequest
0 голосов
/ 05 августа 2010

Итак, что я пытаюсь сделать, это добавить две строки вместе в форме военного времени. Вот пример.

Time1 = "01:00"; Time2 = "04:30";

Если сложить их вместе, получится "05:30". Это кажется невероятно простым, но это был долгий долгий день для нового ученика. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 05 августа 2010

Вы можете сделать что-то подобное в PHP 5.3:

$d = new DateTime("01:00");
$f = $d->add(new DateInterval("PT04H30M"));
echo $f->format("H:i"); //outputs 05:30

Преобразование 04:30 в PT04H30M должно быть тривиальным.Обратите внимание, что то, что вы на самом деле хотите, зависит от того, что вы подразумеваете под «04:30».Этот код может или не может составить 4 * 60 + 30 минут к фактическому времени.

Если вы имеете в виду «4 часа и 30 минут на часах», это всегда правильно.Однако если вы имеете в виду «4 * 60 + 30 минут», это зависит от дня и часового пояса.Пример:

$d = new DateTime("2010-03-28 01:00 Europe/Lisbon");
$f = $d->setTimestamp($d->getTimestamp() + (4*60+30)*60);
echo $f->format("H:i"); //outputs 06:30 due to DST

Альтернативная реализация случая last (при условии текущего дня и часового пояса по умолчанию) для PHP 5.2:

echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00")));

Для первого случаямы должны сделать:

date_default_timezone_set("UTC");
echo date("H:i", strtotime("+4 hours +30 mins", strtotime("01:00")));
...