我对PHP很新,请原谅我,如果这是一个我没有发现的愚蠢错误
我遇到了一个问题,在我们当前使用strtotime
的系统中,它提前一小时返回我们的日期。例如,下午2:15,我将时区设置为欧洲而不是GMT。
我读到strotime遇到了这个问题,但是如果我尝试设置它,我就无法观察它。
所以我尝试使用PHP DateTime
代替。
用户输入时间并将其选择为下午1:15,但我们希望将其存储为13:15。所以我这样做了:
$t = DateTime::createFromFormat('h:i A', $venue['startTime']);
$t_24 = $t->format('H:i:s');
然后我尝试创建我的Date对象
$d = DateTime::createFromFormat('d-m-Y H:i:s', $venue['startDay'] . ' ' . $t_24);
$d->setTimezone(new DateTimeZone('America/New_York'));
echo ' ' . $d->getTimestamp();
尝试在设置对象后设置时区,因为如果将时区添加为createFromFormat
我的计算机时间目前正在观察欧洲时间目前GMT + 1,因为我们正在观察英国的夏令时,我选择通过我们的系统设置的时间为下午1:15,因为我设置了时区I期望输出的时间戳相当于上午7:15,因为它比欧洲时间晚6个小时,但是当我转换时间戳1500639300
时,它仍然等于下午2:15。可能做了一些愚蠢但却无法弄明白的东西?任何帮助将不胜感激:)
答案 0 :(得分:1)
时间戳没有时区 - 它们始终处于UTC时间。如果要保存时区相关数据,请使用其他格式!例如,根据需要保存在H:i:s中。
答案 1 :(得分:1)
你可以使用gmdate()函数来实现这个
<?php $current_time = gmdate('Y-m-d H:i:s'); ?>