コメントが投稿されてからの経過時間を計算しようとしています。私はこれのための関数を見つけました、そしてそれはうまく働いています
しかし、ユーザーのタイムゾーンが原因で、ユーザーに表示される時間が間違っていることに気づきました。私はいくつかの調査を行いましたが、解決策は、と呼ばれるjavascript関数を使用してユーザーのタイムゾーンオフセットをphpページに渡すgetTimezoneOffset
ことであるようです。
問題は、このオフセットを使用してタイムゾーンを作成し、上記でリンクした関数で使用できないことです。別のコードの助けを借りて、私がこれまでに収集できたものです:
function humanTiming ($time,$offset)
{
$isDST = 1; // Daylight Saving 1 - on, 0 - off
$timezoneName = timezone_name_from_abbr('', intval($offset, 10) * 36, $isDST);
$date = new DateTime($time, new DateTimeZone($timezoneName));
$time = strtotime($date);
$time = time() - $time; // to get the time since that moment
$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':'');
}
}
そして、このような関数を呼び出しましょう:
echo humanTiming ($row['date'],"-240");
注:-240
は、そのjavascript関数を実行して得られる値なので、おそらく私のタイムゾーンオフセットです。
最初の問題:値-240
が無効で、のようなものが機能しているよう-0500
です。
2番目の問題:有効なオフセット値を試してみても、関数は42 years
この42年がどのように計算されるかはわかりませんが、完全に間違っています。