我發現了一些我無法真正解釋的東西,也許這裏有人可以給我一個提示。date()和gmdate()的不同結果
我有下面的測試代碼,即打印格式2個時間戳,一個是2013年3月31日,一個用於2014年3月31日,使用date()
和gmdate()
:
<?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
@Ramesh歐洲/柏林 – berliner