我有一个带有日期时间字段的表,我想拉出时间戳并使用PHP将其转换为最接近的最大时间单位。例如,如果条目是在2分36秒之前完成的,那么我想在PHP中回显2分钟。如果是3小时5分钟前,我希望它说3个小时。如果是6天4小时40分钟,应该说是6天。你得到我的漂移。如果不到一分钟,只需几秒钟。
我对PHP的任何日期或时间函数都不熟悉,所以请不要假设我已经知道任何事情。感谢。
答案 0 :(得分:1)
如果您的字段为date
或datetime
,则使用
SELECT UNIX_TIMESTAMP(field) FROM...
如果您的字段存储为int
(自1970年以来的秒数),请使用
SELECT field FROM...
将数据库中的整数值转换为PHP变量$secs
,这是自1970年以来的秒数。我们假设日期是过去的,然后
$diff = time() - $secs;
if ($diff < 60) echo $diff . ' seconds';
else {
$diff = intval($diff / 60);
if ($diff < 60) echo $diff . ' minutes';
else {
$diff = intval($diff / 60);
if ($diff < 24) echo $diff . ' hours';
else {
$diff = intval($diff / 24);
echo $diff . ' days';
}
}
}
答案 1 :(得分:1)
这是你的另一个功能:
function relativeTime($timestamp, $format = "Y-m-d")
{
$difference = time() - $timestamp;
if ($difference >= 604800) { // 7 days
return date($format, $timestamp);
}
$periods = array("Second", "Minute", "Hour", "Day");
$lengths = array("60","60","24","7","4.35","12","10");
$ending = "Ago";
for($j = 0; $difference >= $lengths[$j]; $j++)
$difference /= $lengths[$j];
$difference = round($difference);
if($difference != 1) $periods[$j].= "s";
$text = "$difference $periods[$j] $ending";
return $text;
}
它返回的值如“5分钟前”,“3天前”和“34秒前”。但是,如果日期超过7天,则只返回完整日期,即“2010-04-19”。