PHP date()为返回值添加一小时

PHP date()为返回值添加一小时,php,sql,Php,Sql,我试图显示用户登录的时间长度。除了一件事,我让它工作。时间的小时部分从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 WH

我试图显示用户登录的时间长度。除了一件事,我让它工作。时间的小时部分从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);
**数据库中最后一个_活动列包含:2020-07-08 10:07:58

以下是HTML:

<p style="line-height: 40px">Session length: <b><?= $sessionlength?></b></p>

为什么要加一个小时?任何有建设性的帮助都将不胜感激。

我不明白为什么它会增加一个小时,我认为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');

我只是一个PHP新手,但它是否适应夏令时,所以从格林尼治时间到英国夏令时?谢谢Siobhan,是的,但我认为它会自动这样做。我复制了你的代码,它对我来说工作正常,$dateloggedin=strotime(“2020-07-08 10:07:58”)的sessionlength=02:22:06和当前时间12:32编辑:nevermind我忘了它的伦敦时间
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');