5

これを出力するにはどうすればよいですか

HH:MM形式?

 $to_time = strtotime("2008-12-13 10:42:00");  <--AM
 $from_time = strtotime("2008-12-14 8:21:00");  <-- PM
 $stat = round(abs($to_time - $from_time) / 60,2). "min";

これから得たのは1299分です

しかし、私はそれを出力する方法を理解できません

21時41分

4

2 に答える 2

8

まず、8:21:00を使用して特に指定しない限り、 は午前 8 時と解釈されますDateTime::createFromFormat()

時差を計算するには、次を使用しますDateTime::diff()

$to = new DateTime("2008-12-13 10:42:00");
$from = new DateTime("2008-12-14 8:21:00");

$stat = $to->diff($from); // DateInterval object

echo $stat->format('%Hh:%Im');

これにより、2 つの時刻の時差が表示されますが、最大 24 時間までです。

24 時間以上必要な場合は、次の操作を行う必要があります。

$hours   = $stat->days * 24 + $stat->h;
$minutes = $stat->i;

printf('%02sh:%sm', $hours, $minutes);
于 2012-10-21T22:27:36.650 に答える
2

まず、日付文字列に AM と PM を含める必要があります。そうしないと、次の2008-12-14 8:21:00ように解釈されます。8:21 AM

現在、2 つの日付の違い2019は 33 時 19 分です。24 時間制しかサポートしていないため、標準の日付形式を使用することはできません。$stat整数のままにして、次のsprintfように表示する必要があります。

echo sprintf('%02dh:%02dm', $stat/60, $stat%60);
于 2012-10-21T22:57:33.823 に答える