2010-12-07 23 views
3

私は使用しました:<?php echo dateの動作( "H:i:s"、0);?>

<?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は表示しません。

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

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

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

何か私のPHPの設定に間違っているか、それはPHP関数の日付のための通常の動作ですか?

答えて

5

date()機能では、現在のタイムゾーンが使用されます。設定したタイムゾーンを無視する場合は、date_default_timezone_set()を使用するか、gmdate()を使用してください。

0

私はあなたの例で現在の時間を出力する理由はわかりませんが、最初に秒からタイムスタンプを作成してください。私はもっ​​と深い説明のためにこの質問に従います。

$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がないので、効果が否定され、あなたの現在のタイムゾーンに調整されます。

2

あなたはUTC以外のタイムゾーンにいます。試してみてください:

<?php 
date_default_timezone_set('UTC'); 
echo date("H:i:s",0) . "\n"; 
-1

使用はmktime、および分1時間の@ $ diffのため