繁体   English   中英

设置PHP DateTime似乎没有观察到TimeZones

[英]Setting PHP DateTime doesn't appear to be observing TimeZones

我是PHP的新手,如果这是我没有发现的愚蠢错误,请原谅我

我遇到了一个问题,在我们当前使用strtotime当前系统中,它比实际设置的日期提前一个小时返回了我们的日期。 例如,当我将时区设置为欧洲而不是格林尼治标准时间时,1:15pm变成了2:15 pm。

我读到strotime时遇到了这个问题,但是如果尝试设置时区,则无法观察到其他时区。

因此,我尝试改为使用PHP DateTime

用户输入时间并将其选择为1:15 PM,但是我们要将其存储为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的第三个参数,则createFromFormat

我的计算机时间当前是格林尼治标准时间+ 1,是欧洲时间,因为我们正在观察英国的夏令时,我将通过系统设置的时间选择为1:15 pm,并且因为我已经设置了时区,所以我希望使用时间戳记输出相当于欧洲时间上午7:15,比欧洲时间晚6个小时,但是当我转换时间戳1500639300它仍然等于2:15 PM。 可能做了一些愚蠢的事情,但还不知道怎么办? 任何帮助,将不胜感激 :)

时间戳没有时区-它们始终采用UTC时间。 如果要保存与时区相关的数据,请使用其他格式! 例如,根据需要保存在H:i:s中。

您可以为此使用gmdate()函数

<?php $current_time = gmdate('Y-m-d H:i:s'); ?>

http://php.net/manual/zh/function.gmdate.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM