我有一个有 2 个日期列的表,一个是时间戳值(例如 1359380165),另一个是正常日期时间值(例如 2013-01-28 08:32:53)。
我想找出现在(当前)和上面列出的这些日期之间的时间间隔。所以结果将是例如。
- Daniel 5 分钟前更改了密码
- Jeniffer 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时间戳。