2011-07-19 18 views
2

は、ここに私の機能時間差算出(PHP)は

<?php  
//Find time difference 
    function timeDifference($timeEnd, $timeStart){ 
     $tResult = strtotime($timeEnd) - strtotime($timeStart); 
     return date("G:i", $tResult-3600); 
    } 
?> 

そして、私はlocalhost上

<?php 
    echo timeDifference(12:00:00,08:30:00); 
?> 

結果は罰金が、オンライン私のサーバー上で、それは午前21時30分を示していますた例です3:30です。何ができるの?

UPDATE

ここでは、PHP 5.2

<?php 
//Find time difference 
function timeDifference($timeEnd, $timeStart){ 
    $tResult = round(abs(strtotime($timeEnd) - strtotime($timeStart))); 
    return gmdate("G:i", $tResult); 
} 
?> 

のための私の解決の助けみんなのおかげで

答えて

4

あなたはPHP 5.3を使用している場合、それはビルトインdate_diff()機能が付属しています。

独自の関数をデバッグしようとするよりも簡単かもしれません。

ところで、あなたが与えてくれたコード:引用符は、時間文字列をaruond持っていないので、

echo timeDifference(12:00:00,08:30:00); 

は、仕事に行くことはありません。関数が結果を返すと主張しているので(たとえそれらが間違っていても)、質問のタイプミスであると仮定します。

+0

私は5.2.17を持っています:(使用できません – Warface

+0

@Warface - あなたは本当にアップグレードするべきです; 5.2はもはやサポートされていません(これはいつもオプションではありませんが、可能ならばそうするべきです) – Spudley

+0

私の質問で私の更新ができない場合5.3にいる人のためのこの答えを受け入れるでしょう。 – Warface

0

これは、タイムゾーンの問題である可能性があります。 PHPのページの上部にこの機能でタイムゾーンを設定してみてください:

http://www.php.net/manual/en/function.date-default-timezone-set.php

http://www.php.net/manual/en/timezones.php

+0

いいえ<? エコー日付( "G:i:s"); ?>それは私のサーバー上で適切な時間を示しています。 – Warface

+0

その後、OPのコメントやSpudleyのdate_diff()関数で述べた24時間形式のオプションを試してみてください。 –