データベースからアイテムのリストを取得しています。それぞれに CURRENT_TIMESTAMP があり、 timeagoを使用して「x 分前」に変更しました。それでうまくいっています。しかし、問題は、30 分未満のアイテムに「NEW」バナーが必要なことです。生成されたタイムスタンプ (例: 2012-07-18 21:11:12) を取得し、現在の時刻から 30 分以内であるかどうかを確認するには、そのアイテムの「NEW」バナーをエコーします。
質問する
41905 次
3 に答える
60
strtotime ( "-30minutes")を使用して、行のタイムスタンプがそれより大きいかどうかを確認します。
例:
<?php
if(strtotime($mysql_timestamp) > strtotime("-30 minutes")) {
$this_is_new = true;
}
?>
ここではstrtotime()を2回使用して、mysqlの日付のUNIXタイムスタンプを取得し、次に30分前のタイムスタンプを取得しています。30分前のタイムスタンプがmysqlレコードのタイムスタンプよりも大きい場合は、30分以上経過して作成されている必要があります。
于 2012-07-18T20:30:28.850 に答える
6
PHP のDateTimeオブジェクトを使用して、次のようなことを試してください。
$now = new DateTime();
$then = DateTime($timestamp); // "2012-07-18 21:11:12" for example
$diff = $now->diff($then);
$minutes = ($diff->format('%a') * 1440) + // total days converted to minutes
($diff->format('%h') * 60) + // hours converted to minutes
$diff->format('%i'); // minutes
if ($minutes <= 30) {
echo "NEW";
}
編集:マイクは正しいです。何らかの理由で、%a
実際にはそのタイプの合計(この場合は日)のみを返すことを忘れていました。他のすべては、時間の書式を表示するためのものです。上記を実際に機能するように拡張しました。
于 2012-07-18T20:32:16.400 に答える