私は現在のデータベースと日付の差を計算しています。これは私のPHPコードでTimeAgo()
という関数を使用しています。年を差し引くと異なる結果が返されます
TimeAgo()
コード:
function TimeAgo ($oldTime, $newTime)
{
$timeCalc = strtotime($newTime) - strtotime($oldTime);
if ($timeCalc >= (60*60*24*30*12*2)){
$timeCalc = intval($timeCalc/60/60/24/30/12) . " years ago";
}else if ($timeCalc >= (60*60*24*30*12)){
$timeCalc = intval($timeCalc/60/60/24/30/12) . " year ago";
}else if ($timeCalc >= (60*60*24*30*2)){
$timeCalc = intval($timeCalc/60/60/24/30) . " months ago";
}else if ($timeCalc >= (60*60*24*30)){
$timeCalc = intval($timeCalc/60/60/24/30) . " month ago";
}else if ($timeCalc >= (60*60*24*2)){
$timeCalc = intval($timeCalc/60/60/24) . " days ago";
}else if ($timeCalc >= (60*60*24)){
$timeCalc = " Yesterday";
}else if ($timeCalc >= (60*60*2)){
$timeCalc = intval($timeCalc/60/60) . " hours ago";
}else if ($timeCalc >= (60*60)){
$timeCalc = intval($timeCalc/60/60) . " hour ago";
}else if ($timeCalc >= 60*2){
$timeCalc = intval($timeCalc/60) . " minutes ago";
}else if ($timeCalc >= 60){
$timeCalc = intval($timeCalc/60) . " minute ago";
}else if ($timeCalc > 0){
$timeCalc .= " seconds ago";
}else if ($timeCalc == 0){
$timeCalc = "Just now";
}
return $timeCalc;
}
すべてがデータベース内の値の周りのI混乱するまで、正常に動作します。日付を1901-01-01 00:00:00
に設定すると、結果は116 years ago
として返されますが、代わりにと表示されます。
私は出力を表示するには、このコードを使用しています:
echo TimeAgo($db_user['far_date'], date("Y-m-d H:i:s"))
は単純なものではPHPは日付時刻を計算するとき、私は欠けているありますか?
有効なタイムスタンプの範囲は、通常、金曜日、1901年12月13日20:45:54 UTCから火曜日、2038年1月19日03:14:07 UTCです。 (これらは、32ビット符号付き整数の最小値と最大値に対応する日付です) –
日付の範囲がより広い場合は、64ビットのPHP(64ビットタイムスタンプ値で動作)を使用するか、 DateTimeオブジェクト –