3

私が使用した:

<?php 
echo date("H:i:s", $var_time_diff);
?>

2つの日付の間の時間を構築するために..そして私の頭の中でそれはでした
$var_time_diff = 36000 = display 10:00:00 for 10 hours

しかし実際には

<?php echo date("H:i:s", 0);?> 

表示する01:00:00のではなく00:00:00

だから私たちは

$date_a = "18:15:04";
$date_b = "23:15:04";
$diff = strtotime($date_b) - strtotime($date_a);

今のところすべて問題あり$diffませんが、5時間ですが、次のように日付を表​​示すると、次のようになります。

echo date("H:i:s", $diff);

になります"06:00:00"

それで、私のphp設定に何か問題がありますか、それともphp関数の日付の正常な動作ですか?

4

4 に答える 4

5

このdate()関数は現在のタイムゾーンを使用します。設定したタイムゾーンを無視する場合は、を使用date_default_timezone_set()または使用しますgmdate()

于 2010-12-07T17:25:53.223 に答える
2

UTC 以外のタイムゾーンにいます。試す:

<?php
date_default_timezone_set('UTC');
echo date("H:i:s",0) . "\n";
于 2010-12-07T17:28:56.937 に答える
0

理由はわかりませんがdate、例で現在の時間を出力し、最初に秒からタイムスタンプを作成すると機能します。ただし、より深い説明のために、この質問に従います。

$date_a = "18:15:04";
$date_b = "23:15:04";
$diff = strtotime($date_b) - strtotime($date_a);
echo date("H:i:s", mktime(0,0,$diff));

編集:ああ、それはあなたの現在のタイムゾーンに調整さmktimeれるので、効果は無効になります.

于 2010-12-07T17:28:43.020 に答える
-1

mktime を使用し、時間には min 1 @ $diff

于 2010-12-07T18:02:26.907 に答える