php - PHP date() 增加一个小时返回值
问题描述
我正在尝试显示用户登录的时间长度。我让它工作除了一次。时间的小时部分从 1 而不是 0 开始。
这是PHP代码:
//Set the local timezone to GMT
date_default_timezone_set('Europe/London');
//Fetch the timestamp for when user logged in
$loggedins = $conn->query ("SELECT Last_Activity FROM students WHERE Full_Name = '$name'");
$loggedinr = $loggedins->fetch_assoc();
$dateloggedin = strtotime($loggedinr['Last_Activity']);
//Separate the time from the above
$timelogin = date("h:i:s", $dateloggedin);
$timenow = date("h:i:s");
//Work out the time spent logged in
$sessionlength = strtotime($timenow)-strtotime($timelogin);
$sessionlength = date("H:i:s", $sessionlength);
** 数据库中 Last_Activity 列包含:2020-07-08 10:07:58
这是HTML:
<p style="line-height: 40px">Session length: <b><?= $sessionlength?></b></p>
这是登录 13 分钟后页面显示的内容:
会话长度: 01:13: 44
以下修正显示正确的时间 (00:13:44)
$sessionlength = date("H:i:s", $sessionlength-3600);
为什么要增加一个小时?任何建设性的帮助将不胜感激。
解决方案
我不知道为什么要增加一个小时,我认为 Siobham 的假设是最有意义的,我尝试将时区设置为简单的“欧洲”并打印正确的时间,但如果我添加巴黎,它会增加一个小时。
这似乎是一个更可靠的解决方案
date_default_timezone_set('Europe/London');
$datetime1 = new DateTime('2020-07-08 10:07:58');//start time
$datetime2 = new DateTime($timenow);//end time
$interval = $datetime1->diff($datetime2);
echo $interval->format('%H:%I:%S');
推荐阅读
- python - SQL Select Query 耗时过长,无法加载
- javascript - 图标单击以在 JavaScript 中的画布上绘制矩形
- php - maildev 没有捕捉到 sendmail
- c++ - 可以在 Haskell(模板专业化)中模拟 C++ 使结构“对应”类型的模式吗?
- twisted - Twisted 服务与协议工厂有什么关系?
- r - 有没有将字符串迭代器转换为 R 代码的方法?
- if-statement - 没有 `else` 的 Julia 三元运算符
- kotlin - 如何保留 Kotlin 集合中的内容顺序
- linux - 错误; 14: curl#6 - “无法解析主机:mirrorlist.centos.org;未知错误”
- c++ - 如何使用 FreeImage 将 GPS EXIF 坐标写入 C++ 图像?