タイムスタンプ (x 回前) から相対的な日付を取得するようにスクリプトを修正しました。「昨日」や「一昨日」などの別のレベルの精度を追加するよう微調整したいと考えています。
これを試してみましたが、あまりきれいではありません。「最近」の後の2行をどのように単純化できるか考えていますか?
function relativedate($timestamp, $limit = 1209600){
$diff = time() - $timestamp;
$time = ($diff < 1) ? 1 : $diff;
$times = array(
"year" => 31536000,
"month" => 2592000,
"week" => 604800,
"day" => 86400,
"hour" => 3600,
"minute" => 60,
"second" => 1
);
// Date limit as displayed full
if ($limit > 0 && $diff > $limit){
return "on ".date("d/m/Y - H:i:s", $timestamp);
}
// Recent days
if ($diff > $times["day"] && $diff < ($times["day"] * 2)-1) return "yesterday";
if ($diff > ($times["day"] * 2) && $diff < ($times["day"] * 3)-1) return "the day before yesterday";
// Display x time ago
foreach ($times as $unit => $seconds){
if ($time < $seconds) continue;
$amount = floor($time / $seconds);
return "since $amount $unit".(($amount > 1) ? "s" : "");
}
}
私の編集と返信の両方が機能しますが、まだきれいではありませんか? 別の方法でそれを行う方法を見つけようとしています。
strtotime("yesterday")
とstrtotime("-2 days")
?_