Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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::format()返回错误的1995年日期_Php_Date_Datetime_Timezone_Timestamp - Fatal编程技术网

PHP DateTime::format()返回错误的1995年日期

PHP DateTime::format()返回错误的1995年日期,php,date,datetime,timezone,timestamp,Php,Date,Datetime,Timezone,Timestamp,我有一个时间戳,像812671200。说现在是1995年3月10日00:00。好的 但如果我想用PHP将其格式化如下: $date = new DateTime(); $date->setTimestamp(812671200); $date->setTimezone(new DateTimeZone('Europe/Berlin')); // my timezone echo $date->format('m/d/Y H:i:s'); 上面写着:10/02/1995 23:

我有一个时间戳,像812671200。说现在是1995年3月10日00:00。好的

但如果我想用PHP将其格式化如下:

$date = new DateTime();
$date->setTimestamp(812671200);
$date->setTimezone(new DateTimeZone('Europe/Berlin')); // my timezone
echo $date->format('m/d/Y H:i:s');
上面写着:10/02/1995 23:00:00
使用“UTC”作为时区返回:10/02/1995 22:00:00

我在维基百科上读到,1996年DST改为10月的最后一个星期日,所以我尝试了不同的时间戳,比如上周六,1995年9月的星期日,它们的格式很好,但是1995年9月的最后一个星期日之后的星期一的格式不正确

1981-1995年3月最后一个星期日至9月最后一个星期日。
自1996年3月最后一个星期日至10月最后一个星期日

这是PHP的问题还是我做错了什么?
非常感谢你的帮助。谢谢

首先设置时区,然后再设置它将时间从默认的TZ转换为TZ。在1995年10月。在那一年,DST从3月26日开始,到9月24日结束。因此,10月份它不在DST,偏移量为+01:00(比UTC提前一小时)。因此,该值是正确的:812671200是
1995-10-02T22:00 UTC
1995-10-02T23:00+01:00(柏林)
:首先设置时区,然后设置它将时间从默认的TZ转换为时间。1995年10月。在那一年,DST从3月26日开始,到9月24日结束。因此,10月份它不在DST,偏移量为+01:00(比UTC提前一小时)。因此该值是正确的:812671200是
1995-10-02T22:00 UTC
1995-10-02T23:00+01:00(柏林)