以下に、いくつかの方法とコード例を示します。
-
タイムスタンプの差を計算: この方法では、2つの日時のタイムスタンプの差を計算し、適切な時間単位で表示します。
function customTimeAgo($pastDatetime) { $currentDatetime = time(); $timeDiff = $currentDatetime - strtotime($pastDatetime); $years = floor($timeDiff / (365 * 24 * 60 * 60)); $months = floor($timeDiff / (30 * 24 * 60 * 60)); $weeks = floor($timeDiff / (7 * 24 * 60 * 60)); $days = floor($timeDiff / (24 * 60 * 60)); $hours = floor($timeDiff / (60 * 60)); $minutes = floor($timeDiff / 60); if ($years > 0) { return $years . "年前"; } elseif ($months > 0) { return $months . "ヶ月前"; } elseif ($weeks > 0) { return $weeks . "週間前"; } elseif ($days > 0) { return $days . "日前"; } elseif ($hours > 0) { return $hours . "時間前"; } else { return $minutes . "分前"; } }
この関数を使用する例:
$pastDatetime = "2023-01-01 12:00:00"; $timeAgo = customTimeAgo($pastDatetime); echo $timeAgo;
出力結果: "1年前"
-
日付フォーマットの調整: この方法では、日付フォーマットを調整することでタイムアゴを表示します。
function customTimeAgo($pastDatetime) { $currentDatetime = new DateTime(); $pastDatetime = new DateTime($pastDatetime); $interval = $currentDatetime->diff($pastDatetime); $yearDiff = $interval->y; $monthDiff = $interval->m; $weekDiff = floor($interval->d / 7); $dayDiff = $interval->d; $hourDiff = $interval->h; $minuteDiff = $interval->i; if ($yearDiff > 0) { return $yearDiff . "年前"; } elseif ($monthDiff > 0) { return $monthDiff . "ヶ月前"; } elseif ($weekDiff > 0) { return $weekDiff . "週間前"; } elseif ($dayDiff > 0) { return $dayDiff . "日前"; } elseif ($hourDiff > 0) { return $hourDiff . "時間前"; } else { return $minuteDiff . "分前"; } }
使用例は前と同じです。
これらはいくつかの方法ですが、PHPでカスタムのタイムアゴ機能を実装するための一般的な手法です。必要に応じて、これらの例をカスタマイズして自分の要件に合わせることができます。