2017-08-14 16 views
-3

私は2つの日付の間の違いを返すPHP関数を作成しています:2ヶ月、3週間、6日、3時間。 PHP DateTimeクラスを使用しようとしましたが、月、日、時のみが返され、計算方法を見つけることができません。PHPの日付時刻の差(時、日、週、月)

これは私の関数である:

public function DateTimeDifference($FromDate, $ToDate) { 
    $FromDate = new DateTime($FromDate); 
    $ToDate = new DateTime($ToDate); 
    $Interval = $FromDate->diff($ToDate); 

    $Difference["Hours"] = $Interval->h; 
    $Difference["Days"] = $Interval->d; 
    $Difference["Months"] = $Interval->m; 

    return $Difference; 
} 

、私はまた、戻りデータに含まれる[ "週間"] $の違いを必要としています。

編集:7日で分けて週を取ることができますが、これは正しい結果にはなりません。例:2ヶ月、14日、3時間 - 私が割り切ったとき14日 7と私はこれを得るでしょう:2ヶ月、2週間、14日、3時間そして今これは同じ期間ではありません。

+0

興味深い... 1週間で何日ですか? – iXCray

+0

面白い... 7で割り算された日からモジュロを見つける方法は? – iXCray

+0

モジュロを使う必要はありません。単純な数学です。 – Andreas

答えて

4
public function DateTimeDifference($FromDate, $ToDate) { 
    $FromDate = new DateTime($FromDate); 
    $ToDate = new DateTime($ToDate); 
    $Interval = $FromDate->diff($ToDate); 

    $Difference["Hours"] = $Interval->h; 
    $Difference["Weeks"] = floor($Interval->d/7); 
    $Difference["Days"] = $Interval->d % 7; 
    $Difference["Months"] = $Interval->m; 

    return $Difference; 
} 
+0

これは正しいです。 Crayはモジュロ演算子を使用して、日数を7で除算した後の余りを計算します。詳細はhttp://php.net/manual/en/language.operators.arithmetic.phpを参照してください。 – JasonK