2

phpスクリプトでタイムスタンプを使用して、時間を時間、分、秒で処理しています。タイムスタンプも日付を記録しますが、私は時間を使用してい00:00:00ます。

たとえば、私は時間の違いを計算しています

$start = strtotime("12:00:00");
$end = strtotime("20:00:00");

$difference = $end - $start;

または時間を分割する

$divide = $difference/3;

これらの操作にタイムスタンプを引き続き使用する必要がありますか、それともphpに時間固有の関数がありますか?

4

5 に答える 5

10

これを行う方法の例DateTime

$d1 = new DateTime('11:00:00');
$d2 = new DateTime('04:00:00');

$diff = $d1->diff($d2);

echo $diff->h, " hours ", $diff->i, " minutes\n";

出力:

7 hours 0 minutes
于 2012-06-07T04:17:54.627 に答える
1

私の知る限り、phpには時間固有の標準関数はありません。あなたがしていることは問題ありません。ただし、自分で計算するのはかなり簡単です。

$newHour = $hour1-$hour2;
$newMinute = $minute1 - $minute2;
if($newMinute < 0 ){
    $newMinute +=60;
    $newHour--;
}
$newSecond = $second1 - $second2;
if($newSecond < 0){
    $newMinute --;
    $newSecond +=60;

}

最初の日付が2番目の日付よりも遅いと仮定すると、これは問題なく機能するはずです

于 2012-06-07T04:12:17.240 に答える
1

mktimeを使用できます。あなたはそれをそのように呼ぶことができます:

$time1 = mktime(12,24,60);   // hour,minute,second
$time2 = mktime(16,24,60);
echo ($time2 - $time1);

結果は、 time()strtotime()のように秒です。

于 2012-06-07T04:13:58.087 に答える
1

タイムスタンプが適切な場合は、引き続き使用してください。実際には何も問題はありません(タイムスタンプが32ビット整数に収まらなくなった2038年のUNIXバージョンのY2Kを除く)。あるいは、PHPは、 DateTimeクラスを使用して時間計算を行う別の方法を提供します

于 2012-06-07T04:14:41.637 に答える
0

DateTime2つの時点の差を計算できるクラスを使用する必要があります。

$d1 = new DateTime('11:00:00');
$d2 = new DateTime('04:00:00');

$diff = $d1->diff($d2);

echo $diff->h, " hours ", $diff->i, " minutes\n";
于 2021-01-07T09:15:55.270 に答える