开发者

Subtracting two different times in PHP

This seems like a fairly simple question, but I'm having trouble with it!

In my database, I have two fields that have times in them. Let's say one field, named clockin, reads "2:29:39 pm," and another field, named clockout, reads "2:29:39 pm."

Then I have two other fields, one titled "breakin" which reads 2:28:37 pm and breakout which reads "2:28:55 pm".

I want to subtract breakout from break in to get the difference, and then take that number and subtract it from the difference between clockin and clockout.

How can I do this? Here's what I've tried:

$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);

That gives me two differences, but then I don't know how to subtract one from the other.

Thanks for any h开发者_JAVA百科elp!


Judging by your existing code I'm assuming your running PHP > 5.3 with the DateTime class.

In which case check out DateTime->sub(). You can use it to subtract the DateInterval returned from the break from clock out. Then do the difference between clock in and clock out. That would give you the total time worked.


I've used strtotime() for such problems. It produces pure number values in the form of the Unix timestamp. I'm not experienced with DateTime() but I prefer Unix timestamps since it represents number of seconds and can be converted back into a string or user-friendly format using date() if necessary.

I find storing Unix timestamps in the database is easier to manipulate as well. A user-friendly format isn't necessary until it needs to be displayed to the user.

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜