Вычитание двух разных времен в PHP - PullRequest
1 голос
/ 05 мая 2011

Это кажется довольно простым вопросом, но у меня проблемы с ним!

В моей базе данных у меня есть два поля, в которых есть времена. Допустим, одно поле с именем clockin читается как «2:29:39 pm», а другое поле с именем clockout - «2:29:39 pm».

Тогда у меня есть два других поля, одно из которых называется "breakin", которое читается как 2:28:37 pm, и breakout, которое читается как "2:28:55 pm".

Я хочу вычесть прорыв из взлома, чтобы получить разницу, а затем взять это число и вычесть его из разницы между clockin и clockout.

Как я могу это сделать? Вот что я попробовал:

$clockout = new DateTime($row['clockout']);
$clockin = new DateTime($row['clockin']);



$diff = $clockout->diff($clockin);

$on_the_clock = sprintf('%d hours, %d minutes, %d seconds', $diff->h, $diff->i, $diff->s);


$breakin = new DateTime($row['breakin']);
$breakout = new DateTime($row['breakout']);

$diff2 = $breakout->diff($breakin);
$break = sprintf('%d hours, %d minutes, %d seconds', $diff2->h, $diff2->i, $diff2->s);

Это дает мне два отличия, но тогда я не знаю, как вычесть одно из другого.

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Судя по существующему коду, я предполагаю, что вы используете PHP> 5.3 с классом DateTime .

В этом случае проверьте DateTime-> sub () .Вы можете использовать его для вычитания DateInterval , возвращенного из break из clock out .Затем выполните разницу между clock in и clock out .Это даст вам общее время работы.

1 голос
/ 05 мая 2011

Я использовал strtotime () для таких проблем.Это производит чистые числовые значения в форме метки времени Unix.У меня нет опыта работы с DateTime (), но я предпочитаю метки времени Unix, поскольку они представляют количество секунд и могут быть преобразованы обратно в строку или в удобный для пользователя формат с использованием date () при необходимости.

Я считаю, что хранить метки времени Unix в базе данных также легче.Удобный для пользователя формат не требуется, пока его не нужно отобразить пользователю.

[http://php.net/manual/en/function.strtotime.php][1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...