3

日付と時刻に通常の PHP コード (d、Y、m など) を使用して日付の差をフォーマットしようとすると、値ではなく単に文字が出力されます。これは、DateTime::diff をフォーマットする場合のみです。単純な DateTime オブジェクトで問題なく動作します。

これ:

$date1 = new DateTime('2000-01-01');
$date2= new DateTime('now');
$date=$date2->diff($date1);
echo $date->format('d days ago');

「d日前」を出力します。

d を %a に置き換えると、これが何日前であったかが出力されることはわかっています。秒、分、さらには年を出力する他の文字は何だろうと思っていました。

前もって感謝します!

4

1 に答える 1

8

DateTime::diff() はDateIntervalオブジェクトを返します。

例えば:

<?php

$date1 = new DateTime('2000-01-01');
$date2= new DateTime('now');
$interval=$date2->diff($date1);
echo "Years: {$interval->y }\n";
echo "Months: {$interval->m }\n";
echo "Days: {$interval->d }\n";
echo "Hours: {$interval->h }\n";
echo "Mins: {$interval->i }\n";
echo "Secs: {$interval->s }\n";
echo $interval->format("%Y years, %m months, %d days,  %H hours, %i minutes, %s seconds") . "\n";

出力します:

Years: 13
Months: 1
Days: 11
Hours: 13
Mins: 14
Secs: 44
13 years, 1 months, 11 days,  13 hours, 21 minutes, 43 seconds
于 2013-02-12T18:23:02.950 に答える