2016-06-26 5 views
1

私はこれは、あなたが知っているように時間差を計算するためのコードであるURL- 時間差が

$datetime1 = new DateTime("2010-06-20"); 

$datetime2 = new DateTime("2011-06-22"); 

$difference = $datetime1->diff($datetime2); 

echo 'Difference: '.$difference->y.' years, ' 
        .$difference->m.' months, ' 
        .$difference->d.' days'; 

print_r($difference); 

stackoverflowの時間差についての記事を読んで、私は挿入する時間の差分を必要としますdb。しかし、もしtime diffが0年未満であれば0年も挿入しますが、どうすればこれを防ぐことができますか? foreachymd値を超える

+0

* insert into db * - その重要な列の種類は何ですか? – RomanPerekhrest

+0

それはvarchar 30 –

+0

なので、その列に '0 years、0 months、2 days'という値がありますか? – RomanPerekhrest

答えて

0

だけループ、彼らはそれぞれの場合に0以上を合計場合は、それらを追加しますか?

$datetime1 = new DateTime("2010-06-20"); 
$datetime2 = new DateTime("2011-06-22"); 

$difference = $datetime1->diff($datetime2); 

$description = []; 
foreach (["year", "month", "day"] as $unit) { 
    $value = $difference->{substr($unit, 0, 1)}; 
    switch ($value) { 
     case 0: break; 
     case 1: $description[] = "1 $unit"; break; 
     default: $description[] = "$value {$unit}s"; break; 
    } 
} 
echo "Difference: " . implode(", ", $description);