Help us understand the problem. What is going on with this article?

PHPで時間計算

勤務時間など算出したいときに「PHP 時間 計算」と調べていたのですが、検索上位に出てくるのがどうしても「日時の計算」で出てきてしまうため、自身の備忘として。

Code

例えば10:00から18:00まで仕事をしたときの勤務時間を算出。

time_diff.php
<?php

$Date = date("Y-m-d");
$InTime = $Date." 10:00:00";
$OutTime = $Date." 18:00:00;

$WorkTime = (strtotime($OutTime) - strtotime($InTime))/3600; 

?>

これで$WorkTimeをechoしてあげれば「8」と表示されるはずです。
小数点以下第一位まで出したい場合は

echo format_number($WorkTime, 1);

としてあげれば良いです。

計算詳細

計算内容を見ていきます。

strtotimeは英文形式の日付をUnixタイムスタンプに変換します。
(ひとまずdateでその日の年月日を取得しているので、日付は投稿日の2020/10/02とします)

strtotime($InTime) = 1601600400
strtotime($OutTime) = 1601629200

なので、これを引き算。

strtotime($OutTime) - strtotime($InTime) = 1601629200 - 1601600400 = 28800

Unixタイムスタンプなので、単位は「秒」です。
なので、これを時間に直すために3600で除算します。

28800 / 3600 = 8

※参考URL
[PHP]strtotime
https://www.php.net/manual/ja/function.strtotime.php

ynack
主にMacを使用して日々プログラムの勉強中。 ゆるゆると更新していきます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away