【问题标题】:Time Function not correctly calculating时间函数计算不正确
【发布时间】:2016-07-08 22:43:46
【问题描述】:

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

我有下面的行调用函数 time_passed 的行时间

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 年前,这可能是什么原因造成的?谢谢

【问题讨论】:

  • 在某个地方,您的日期/时间格式对于 PHP 来说是无效的
  • 我不明白您在帖子的结尾处显示了如何插入时间。您的脚本将timestamp 作为其参数。你能给我们一个你尝试过的时间戳,你期望什么以及输出什么?
  • 您输入的是 hh:mm:ss 中的时间,但您的函数需要时间戳。

标签: php mysql


【解决方案1】:

只需要你做以下事情

将此行 $timestamp = (int) $timestamp; 更改为

$timestamp  = strtotime($timestamp);

并添加您所在国家/地区的默认时间。例如,我来自印度,我曾经在函数的开头设置date_default_timezone_set('Asia/Kolkata');

【讨论】:

  • 感谢您的帮助
  • 没问题。乐于助人:)
  • 你可能知道为什么在 5 + 小时没有活动之后时间会变为 -28025 秒前。我添加了上面的答案,但是经过一段时间后,时间显示为 -numbers ,它会再次更新,但只要我在正常时间发布新帖子。
  • 是的。因为您只检查时间而不是日期和时间。如果当前时间是 08:00:00 并且发布时间是昨天 10:00:00 。它正在做类似 8 -10 的计算
  • 再次感谢,它现在可以在我的表中更新为 DATETIME 了。所有其他较早的时间都正常显示。太棒了!
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
相关资源
最近更新 更多