1

作成された投稿の有効期限であるmysqlデータベースに列があります....各投稿の有効期限に達するまでの残り時間と秒数を表示しようとしているページがあります。たとえば、データベースにこれがあります:

2013-03-07 13:15:39

これは、この投稿がいつ期限切れになるかを示しています....

ここで、各投稿を表示するページに移動し、各投稿の有効期限が切れるまでの残り時間を (現在の時間に基づいて) 表示できるようにしたいと考えています。

2013-03-07 12:15:39

私はこれまでこれを使用してきました:

$now = new DateTime(date("h:i:s",time()));
$exp = new DateTime($row['time_expires']);
$diff = $now->diff($exp);
printf('%d hours, %d minutes, %d seconds', $diff->h, $diff->i, $diff->s);

$row がデータベースから投稿を取得している場所

多少は機能していますが、時々問題があるようです...理由はわかりませんが、うまく機能することもありますが、もう一度確認すると、実際には2時間と表示されるはずなのに、有効期限まで15時間と表示されます

4

1 に答える 1

3

hinは 12 時間制であり、24 時間制と解釈されるdate()ため、混乱を招きます。オブジェクトにはデフォルトで現在の時刻があるため、次を使用してくださいDateTimeDateTime

  $now = new DateTime();
  $exp = new DateTime($row['time_expires']);
  $diff = $now->diff($exp);

しかし、クエリで直接それを行うという Marc B の提案は、おそらくより良いものです。

于 2013-03-07T21:16:28.713 に答える