0

我的社区网站的禁止系统用时间戳将时间记录在 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

请有人告诉我我哪里出了问题。非常感谢。

4

5 回答 5

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;?>
于 2013-04-20T23:05:34.620 回答
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

检查此以获取更多信息

丁斯

于 2013-04-20T23:25:54.317 回答
0

你没有错。date() 适用于自 以来的秒数1/1/1970 00:00:00。因此,当您有86400*8 + 3600*1秒作为差异时,您将拥有08/01/1970 01:00:00as 输出。此外,您将有一个与您的时区相对应的差异。

您必须使用自己的功能来显示时间:

$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";
于 2013-04-20T23:08:19.837 回答
0

($row['temptime'] -$row['time'] )/60让你与众不同minute

于 2013-04-21T05:49:59.403 回答
0

我认为最好的方法是

  • $diff = strtotime('2009-10-05 18:11:08') - strtotime('2009-10-05 18:07:13')
于 2014-03-21T10:25:27.923 回答