【发布时间】:2014-03-06 09:11:08
【问题描述】:
我发现了一些我无法真正解释的东西,也许这里有人可以给我一个提示。
我有以下测试代码,使用date()和gmdate()打印2个格式化时间戳,一个用于31.03.2013,一个用于31.03.2014:
<?php
function print_date($timestamp, $year) {
// Add timezone offset for germany
$timestamp += 3600;
print "in $year\n";
print "date: " . date('d.m.Y H:i:s', $timestamp) . "\n";
print "gmdate: " . gmdate('d.m.Y H:i:s', $timestamp) . "\n";
print "\n";
}
$end_2013 = 1364684400; // 31.03.2013
$end_2014 = 1396216800; // 31.03.2014
print_date($end_2013, '2013');
print_date($end_2014, '2014');
print "Default timezone: " . date_default_timezone_get() . "\n";
结果让我吃惊:
in 2013
date: 31.03.2013 01:00:00
gmdate: 31.03.2013 00:00:00
in 2014
date: 31.03.2014 01:00:00
gmdate: 30.03.2014 23:00:00
Default timezone: Europe/Berlin
2014 年的差异从何而来?我的第一个想法是夏令时,但为什么在 2013 年没有效果呢? 为什么2014年相差2小时,2013年只有1小时?
【问题讨论】:
-
您的默认时区是什么?
-
@Ramesh Europe/Berlin