时间戳的日期差异和 MYSQL 中的正常日期



我有一个有 2 个日期列的表,一个是时间戳值(例如 1359380165),另一个是正常的日期时间值(例如 2013-01-28 08:32:53)。

我想找到从现在(当前)到上面列出的这些日期之间的时间间隔。所以结果将是例如。

  1. 丹尼尔更改了密码 5分钟前
  2. 詹妮弗在3天前删除了她的电话号码。

有什么想法吗?

这个函数应该做一些类似于你所追求的事情,试一试,它只需要一个像你的"1359380165"时间戳一样传递给它的 unix 时间戳。

function getRelativeTime($timestamp)
{
    $timeDifference = time() - $timestamp;
    $timePeriods    = array('second', 'minute', 'hour', 'day', 'week','month', 'years', 'decade');
    $timeLengths    = array('60', '60', '24', '7', '4.35', '12', '10');
    if ($timeDifference > 0)
    {
            $timeSuffix = 'ago';
    }
    else
    {
        $timeDifference = -$timeDifference;
        $timeSuffix     = 'to go';
    }
    for($i = 0; $timeDifference >= $timeLengths[$i]; $i++)
    {
        $timeDifference/= $timeLengths[$i];
        $timeDifference = round($timeDifference);
    }
    if($timeDifference != 1) $timePeriods[$i].= 's';
    return $timeDifference . ' ' . $timePeriods[$i] . ' ' . $timeSuffix;
}

假设有这样的表:

我的表

id int unsigned not null auto_increment primary key
username varchar(45) not null
utime int
dtime timestamp

为什么不只构造查询,以便 PHP 以相同的格式接收两个时间戳? 像这样:

SELECT id, username, FROM_UNIXTIME(utime, '%Y-%m-%d %H.%i.%s') AS ut, dtime AS dt FROM mytable;

SELECT id, username, utime AS ut, UNIX_TIMESTAMP(dtime) as dt FROM mytable;

然后,您可以以相同的方式处理ut和dt。

这里有一个很好的相对时间函数。它需要一个 unix 时间戳。

相关内容

  • 没有找到相关文章

最新更新