Php 为什么在codeigniter中秒和分钟计算不正确?

Php 为什么在codeigniter中秒和分钟计算不正确?,php,mysql,codeigniter,time,Php,Mysql,Codeigniter,Time,我目前正在创建一个CI项目,我面临以下问题。 我想显示“发布的”X“时间前”文本,我在网上找到了一个脚本,但秒和分钟没有正确显示 我已经在网上搜索过了,但什么也没找到 以下是我的功能: $today = time(); $createdday = mysql_to_unix($ptime); $datediff = abs($today - $createdday); $difftext = ""; $years = floor($datediff / (365 * 60 * 60 * 24)

我目前正在创建一个CI项目,我面临以下问题。 我想显示“发布的”X“时间前”文本,我在网上找到了一个脚本,但秒和分钟没有正确显示

我已经在网上搜索过了,但什么也没找到

以下是我的功能:

$today = time();
$createdday = mysql_to_unix($ptime); 
$datediff = abs($today - $createdday);
$difftext = "";
$years = floor($datediff / (365 * 60 * 60 * 24));
$months = floor(($datediff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days = floor(($datediff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
$hours = floor($datediff / 3600);
$minutes = floor($datediff / 60);
$seconds = floor($datediff);
这是满的垃圾桶

有什么想法吗


谢谢

发生此错误是因为您在计算天数后没有减少datediff。但我认为使用DateTime对象进行此类计算更合适

$today = time();
$createdday = mysql_to_unix($ptime);
$today_d = new DateTime();
$today_d->setTimestamp($today);
$createdday_d = new DateTime();
$createdday_d->setTimestamp($createdday);
print_r($today_d->diff($createdday_d));

mysql\u to\u unix的功能是什么?@Raymond它将mysql时间戳转换为unix,因为我是新来的,它在其他语言中也能工作,对吗?!如您所见,DateInterval对象只包含数字。它工作正常!我只是想多学一点!非常感谢你!嗯,还是有点不对劲。。如我所见,它没有正确计算分钟数和前几个小时数。。e、 g:一个条目是1小时33分钟前发布的,我只得到33分钟。在不到1小时前发布的内容中也是如此。。但是其他的都正常工作了(我想)。。有什么想法吗?!我试着给你们举一个例子,上一个时间戳在计算前出错。