0

我对 php 相当陌生,并且在我的测试 vr 生产服务器上时间表示不同时遇到了问题。我正在计算工作时间,就像在时钟上一样。打卡打卡=总工作时间。我正在使用这段代码:

$time1 = $_POST['txt_starttime'];
$time2= $_POST['txt_endtime'];

$TotTime=date('H:i',strtotime($time2)-strtotime($time1));

晚上 11:45 到晚上 11:50 = 5 分钟在我的测试服务器上,它工作正常,并将 00:05 存储在数据库中。在生产服务器上,它给了我 05:05:00 我玩了格式变量,但后来我得到了 17:05:00

这是服务器端设置...请帮助!

4

3 回答 3

1

您需要设置时区

date_default_timezone_set('Etc/GMT+1');
于 2013-02-15T15:53:07.713 回答
1

似乎服务器正在使用默认的 GMT 时区。您需要匹配逻辑中的差异或配置服务器以调整差异。

因此,如果您的家庭时区是+530小时,您需要以某种方式添加+ 5 hours 30 minutesstrtotime(), 例如:

if ($production)
    $basetime = "+ 5 hours 30 minutes";
else
    $basetime = ""

并且您需要将生产中的标志设置为true.

否则,您可以使用该函数date_default_timezone_set并传递时区:

date_default_timezone_set('Asia/Calcutta');
于 2013-02-15T15:53:15.853 回答
0

date根据 UNIX 时间戳为您提供一天中的时间。UNIX 时间戳是自 1970 年 1 月 1 日以来的秒数;因此它是一个相对时间。结果date绝对时间

您想表示一个时间跨度,即相对时间。不要将其格式化为绝对时间。您正在生成的是绝对时间戳January 1st 1970 00:0500:05 ,如果在正确的时区中表示,其中的小时和分钟部分恰好是。在不同的时区,情况会有所不同。

要从300(秒) 到5(分钟),请使用数学 ( 300 / 60) 将它们转换。

于 2013-02-15T15:56:16.430 回答