PHP5在空白时间变量/计算中加上1 HR

|| 我最近升级到PHP5,并注意到在我构建的应用程序中,似乎有些小时增加了我的一些变量和计算。 我在用: date_default_timezone_set(\'欧洲/伦敦\'); 据我了解,这意味着PHP使用的是BST而不是标准的GMT,但是当我打印空变量时(之前使用\“ H:i \”返回00:00)-我现在的值为01:00。 计算两个日期时间之间的时/分差异时,我还会得到一个额外的小时。 我的基本代码是:
<td><?php if(isset($item->start_time)) { echo date(\'H:i\', strtotime($item->start_time)); } ?></td>
<td><?php if(isset($item->finish_time)) { echo date(\'H:i\', strtotime($item->finish_time)); }?></td>
<td>
     <?php
     $start = strtotime($item->start_time);
     $end = strtotime($item->finish_time);
     $elapsed = $end - $start;
     if($elapsed != NULL) { echo date(\"H:i\", $elapsed); }
     ?>
</td>
例如,rown返回以下内容: 开始:08:57(基于我数据库中的$ item-> start_time为2011-03-19 08:57:23) 结束:12:59(基于我数据库中的$ item-> finish_time为2011-03-19 12:59:38) 计算:05:02(应该为04:02)     
已邀请:
尝试设定
date_default_timezone_set(\'UTC\');
在将您经过的时间转换为H:i格式之前
if($elapsed != NULL) { echo date(\"H:i\", $elapsed); } 
记得之后再重设一次 您将经过的时间当作格式化的日期时间戳记(这是date()函数所期望的),因此PHP遵循它的标准行为并将其视为语言环境格式化的日期/时间(不理解) (它被用作经过时间),因此它会增加小时以根据您的时区设置显示正确的时间。     
您正在将时差视为使用date(\“ H:i \”)的时间点。我建议您只是手动计算经过的时间差
echo floor( $elapsed / 60) . \":\" . ($elapsed % 60)
否则,当$ elapsed大于24小时时,您将遇到问题。     

要回复问题请先登录注册