基本的に、数日前にMySQLデータベースをいじって、タイムゾーンをMSTに設定して、PHPスクリプトがあるサーバーと一致させました(PHPサーバーのタイムゾーンもMSTに設定しました(date_default_timezone_set("MST")
)データベースと一致します)。1 つのパラメーターを必要とする関数があり、それは UNIX タイムスタンプです。
function time_elapsed_string($time)
{
$time = time() - $time;
$tokens = array(
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach($tokens as $unit => $text)
{
if($time < $unit) continue;
$numberOfUnits = floor($time / $unit);
return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
}
}
この関数が行うことは、$time
. 現在時刻と $time の時差を取得し、その差を設定$time
します。次に、可能性のある最大のタイムスタンプを計算し、それ$time
をエコーします。複数形 (2 週間、5 か月など) の場合は、末尾にsを追加します。
ただし、現在の時刻を - パラメーターとして指定すると、 ' [SPACE]ago$time
'がエコーされます。行を現在の数値80を 5 または 10に増やして正確にすることで、一時的に解決しました。$time = time() - $time;
$time = (time() + 80) - $time;
簡単な説明: 「 [SPACE]ago 」 だけがエコーされないように、差を計算するときに現在の時刻に秒を追加する必要があります。
ページのステータスを更新したときにこの関数を使用しています。挿入クエリがデータベースに送信され(時間列が入力されていない)、タイムスタンプ列はデフォルトで現在のタイムスタンプであるため、現在のタイムスタンプ。
毎日5つまたは10を追加することは将来安定しないことを本当に理解しているので、どうすればこれを修正できますか.
PS。私はウェブホスト上にいるため、MySQL サーバーなどを再起動できないと思います。また、再起動するための適切な権限がないと思います。
EDIT1: 挿入されたタイムスタンプが約1分進んでいるように見えますが、実際にはそうです。これが原因でしょうか?
EDIT2:今、数週間後、時間前の機能が正確で あることを確認するために、100〜200秒余分に追加する必要があります.