Php 时间函数计算不正确

Php 时间函数计算不正确,php,mysql,Php,Mysql,我的时间计算不正确我在profile.php中调用了time.php来计算上次发送消息的时间等 我有下面一行调用函数time_,它为行时间传递 echo "time_passed"($row['time']); 这是计算时间的代码 <?php // DISPLAYS COMMENT POST TIME AS "1 year, 1 week ago" or "5 minutes, 7 seconds ago", etc... function time_passed($

我的时间计算不正确我在profile.php中调用了time.php来计算上次发送消息的时间等

我有下面一行调用函数time_,它为行时间传递

echo "time_passed"($row['time']);
这是计算时间的代码

   <?php

  // DISPLAYS COMMENT POST TIME AS "1 year, 1 week ago" or "5 minutes, 7    seconds ago", etc...
 function time_passed($timestamp){
//type cast, current time, difference in timestamps
$timestamp      = (int) $timestamp;
$current_time   = time();
$diff           = $current_time - $timestamp;

//intervals in seconds
$intervals      = array (
    'year' => 31556926, 'month' => 2629744, 'week' => 604800, 'day' => 86400, 'hour' => 3600, 'minute'=> 60
);

//now we just find the difference
if ($diff == 0)
{
    return 'just now';
}    

if ($diff < 60)
{
    return $diff == 1 ? $diff . ' second ago' : $diff . ' seconds ago';
}        

if ($diff >= 60 && $diff < $intervals['hour'])
{
    $diff = floor($diff/$intervals['minute']);
    return $diff == 1 ? $diff . ' minute ago' : $diff . ' minutes ago';
}        

if ($diff >= $intervals['hour'] && $diff < $intervals['day'])
{
    $diff = floor($diff/$intervals['hour']);
    return $diff == 1 ? $diff . ' hour ago' : $diff . ' hours ago';
}    

if ($diff >= $intervals['day'] && $diff < $intervals['week'])
{
    $diff = floor($diff/$intervals['day']);
    return $diff == 1 ? $diff . ' day ago' : $diff . ' days ago';
}    

if ($diff >= $intervals['week'] && $diff < $intervals['month'])
{
    $diff = floor($diff/$intervals['week']);
    return $diff == 1 ? $diff . ' week ago' : $diff . ' weeks ago';
}    

if ($diff >= $intervals['month'] && $diff < $intervals['year'])
{
    $diff = floor($diff/$intervals['month']);
    return $diff == 1 ? $diff . ' month ago' : $diff . ' months ago';
}    

if ($diff >= $intervals['year'])
{
    $diff = floor($diff/$intervals['year']);
    return $diff == 1 ? $diff . ' year ago' : $diff . ' years ago';
}
}

?>

结果如下

我的桌子是空的

时间以以下格式插入


当一个查询运行时,时间会自动插入,然后我会在上面的表中显示结果,但它说的是46年前,是什么原因造成的?谢谢

您只需要执行以下操作

更改此行
$timestamp=(int)$timestamp

$timestamp  = strtotime($timestamp);

并添加您所在国家/地区的默认时间。例如,由于我来自印度,我习惯于设置
date\u default\u timezone\u set('Asia/Kolkata')
在函数的开头

你的日期/时间格式对PHP来说是无效的,我不明白你的文章的结尾是如何显示时间插入的。脚本将
时间戳
作为其参数。你能给我们一个你尝试过的时间戳,你期望的是什么,输出的是什么吗?你正在按说明用hh:mm:ss输入时间,但是你的函数需要一个时间戳。谢谢你的帮助。没问题。乐于帮助:)你可能知道为什么在5个多小时没有活动后时间会变为-28025秒前吗。我已经添加了上面的答案,但是在经过一段时间后,时间显示为-数字,它会再次更新,尽管我一发布新的帖子到正常时间。是的。因为您只检查时间,而不检查日期和时间。如果当前时间是08:00:00,发布时间是昨天的10:00:00。它正在进行类似8-10的计算再次感谢,它现在可以工作了。我在表中更新为DATETIME。所有其他较旧的时间都显示为正常时间。明亮的