我对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
这是服务器端设置......请帮忙!!!
答案 0 :(得分:1)
您需要设置时区
date_default_timezone_set('Etc/GMT+1');
答案 1 :(得分:1)
服务器似乎正在使用默认的GMT TimeZone。您需要匹配逻辑上的差异或配置服务器以调整差异。
因此,如果您的家乡时区为+530
小时,则需要将+ 5 hours 30 minutes
添加到strtotime()
,方式如下:
if ($production)
$basetime = "+ 5 hours 30 minutes";
else
$basetime = ""
您需要将制作中的标记设置为true
。
否则,您可以使用函数date_default_timezone_set
并传递时区:
date_default_timezone_set('Asia/Calcutta');
答案 2 :(得分:0)
date
从UNIX时间戳中为您提供时间。 UNIX时间戳是自1970年1月1日以来的秒数;因此它是相对时间。 date
的结果是绝对时间。
您想表示时间跨度,即相对时间。不要将其格式化为绝对时间。您所制作的是绝对时间戳 1970年1月1日00:05 ,如果在正确的时区中表示,则小时和分钟部分恰好为00:05
。在不同的时区,它会有所不同。
要从300
(秒)转到5
(分钟),请使用数学(300 / 60
)转换它们。