gpt4 book ai didi

php - 当减去年份时,它返回不同的结果

转载 作者:行者123 更新时间:2023-11-29 02:13:02 25 4
gpt4 key购买 nike

我正在计算数据库中的日期与当前时间之间的差异。我在我的 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;
}

一切正常,直到我弄乱了数据库中的值。如果我将日期设置为 1901-01-01 00:00:00 它应该将结果返回为 116 年前 但它显示为 48 年前

我正在使用这段代码来显示输出:

echo TimeAgo($db_user['far_date'], date("Y-m-d H:i:s"))

当 PHP 计算日期时间时,我遗漏了什么简单的东西吗?

最佳答案

我认为这取决于所使用的 PHP 版本。我在网上找到:

However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).

因此,这个默认日期发生在 48 年前,与您得到的相符。

在较新的版本中,范围是:1901 年 12 月 13 日星期五 20:45:54 GMT 到 2038 年 1 月 19 日星期二 03:14:07 GMT。

如果您真的想使用这个日期,那么我建议您直接在 MySQL 上执行此操作,我记得它使用的是从 1000 年开始的范围。

关于php - 当减去年份时,它返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46754529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com