我的社区网站的禁止系统使用时间戳记录MySQL表中的时间。
我有以下代码来显示临时禁令发布的时间,但是无法计算时差。它记录禁令的方式是记录禁令发布的时间,并记录临时禁令完成的时间。由此可以计算禁令的长度,不知怎的......
<b>Time of ban:</b> <?php echo date('d/m/Y H:i:s', $row['time']);?><br />
<b>Time of unban:</b> <?php echo $row['temptime'];?><br />
<b>Unban time - ban time=</b> <?php echo $diff;?>
当我尝试这个时:
<b>Tempban length:</b> <?php echo date('d/m/Y H:i:s', $diff);?>
输出Tempban length: 08/01/1970 01:00:00
拜托,有人告诉我这里出错了。非常感谢。
答案 0 :(得分:1)
$diff = $row['temptime'] - $row['time'];
$diff_years = floor($diff / (365*60*60*24));
$diff_monthes = floor(($diff - $diff_years * 365*60*60*24) / (30*60*60*24));
$diff_days = floor(($diff - $diff_years * 365*60*60*24 - $diff_monthes*30*60*60*24)/ (60*60*24));
$diff_hours = floor(($diff - $diff_years * 365*60*60*24 - $diff_monthes*30*60*60*24 - $diff_days*60*60*24)/ (60*60));
$diff_minutes = floor(($diff - $diff_years * 365*60*60*24 - $diff_monthes*30*60*60*24 - $diff_days*60*60*24 - $diff_hours*60*60)/ 60);
// here you can format output, using variables above, for example:
$diff = $diff_hours." hours, ".$diff_minutes." minutes.";
<b>Tempban length:</b> <?php echo $diff;?>
答案 1 :(得分:1)
试试这个:
//time when the person was banned
$banTime = date_format($row['time'], 'Y-m-d H:i:s'); // too make sure its the right format
$banLifted = date_format($row['temptime'], 'Y-m-d H:i:s');
$bt = new Datetime($banTime);
$bl = new Datetime($banLifted);
$diffTime = $bl->diff($bt);
你能看出这是否符合你的目的..
你可以随时致电:
$diffTime ->format('%R%a days'); //for number or days
选中此处以获取更多信息datetime
DINS
答案 2 :(得分:0)
你没有错。 date()适用于1/1/1970 00:00:00
以来的秒数。所以当你有86400*8 + 3600*1
秒作为差异时,你将08/01/1970 01:00:00
作为输出。此外,您将拥有与您的时区相对应的差异。
您必须使用自己的功能来显示时间:
($seconds
是您的代码中的名称$diff
)
$years = floor($seconds / 365 * 86400);
$days = floor(($seconds -= $years * 365 * 86400) / 86400);
$hours = floor(($seconds -= $days * 86400) / 3600);
$minutes = floor(($seconds -= $hours * 3600) / 60);
$seconds -= $minutes * 60;
echo "$years years, $days days, $hours hours, $minutes minutes and $seconds seconds";
答案 3 :(得分:0)
($row['temptime'] -$row['time'] )/60
为您提供minute
答案 4 :(得分:0)
我认为最好的方法是