Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DateTime-时区偏移和包含夏令时_Php_Date_Datetime_Timezone_Timezone Offset - Fatal编程技术网

Php DateTime-时区偏移和包含夏令时

Php DateTime-时区偏移和包含夏令时,php,date,datetime,timezone,timezone-offset,Php,Date,Datetime,Timezone,Timezone Offset,我知道关于这个话题的问题已经被问了一遍又一遍,但是所有的阅读只是增加了我的困惑,所以我决定在这里提问 我在一个网站上工作,用户可以存储事件,这是连接到一个日期。此日期作为DATETIME类型存储在mysql数据库中 所以我“只是”想做的是:从数据库中获取日期并格式化它,但不知何故,自从夏令时开始,ech日期显示为负一小时 代码: 如果我的假设是正确的,那么“夏季”中的偏移量应该是零,对吗?但这导致了我无法理清的一点,因为我在时区欧洲/柏林UTC+1的定义 那么这个getOffset()代表哪个偏

我知道关于这个话题的问题已经被问了一遍又一遍,但是所有的阅读只是增加了我的困惑,所以我决定在这里提问

我在一个网站上工作,用户可以存储事件,这是连接到一个日期。此日期作为DATETIME类型存储在mysql数据库中

所以我“只是”想做的是:从数据库中获取日期并格式化它,但不知何故,自从夏令时开始,ech日期显示为负一小时

代码:

如果我的假设是正确的,那么“夏季”中的偏移量应该是零,对吗?但这导致了我无法理清的一点,因为我在时区
欧洲/柏林
UTC+1的定义

那么这个
getOffset()
代表哪个偏移量,如何显示“正确的时间”


提前谢谢

您可以通过日期('I',$date)检查其夏时制;并添加或删除一个小时。昨天有同样的问题;-)你是如何储存日期的?UTC?冬季时间是正确的时间。夏天是+1Hour@PeeHaa说得好!我没有对这部分进行编码。但是数据库中的值比应该显示的日期早一个小时。@PeeHaa:不总是这样。如果你想代表“2020年12月1日上午10点在巴黎”,那就值得像这样存储。。。因此,如果时区规则从现在到2020年发生变化,你仍然会在上午10点结束。UTC在存储时间戳等方面非常好,但它不是许多人认为的银弹。
$date = $item['date'] //<-- the result from the database (2015-11-27 08:15:00)

$dt = new DateTime($date, new DateTimeZone(date_default_timezone_get()));

echo $dt->format('G:i') // 8:15
echo $dt->getOffset() // 3600s = 1 hour