PHP错误检查夏令时,日光节约时间


PHP error checking for DST, Daylight Savings Time

由于时间刚刚在使用夏令时的地方改变了过去的周末,我相信会有一些与此相关的查询。

我正试图确定一个日期是否使用夏令时。因此,我假设2011年10月30日不使用夏令时,因为转换发生在该日期…这是正确的吗?

下面是代码(我希望10月30日不使用夏令时):

<?php
echo "Timezone = " . date_default_timezone_get();
echo "</br>";
$dateOct29='2011-10-29';
$dateOct29Timestamp=strtotime($dateOct29,time());
$checkDayLightSavingOct29=date('I',$dateOct29Timestamp);
echo "Date : ".$dateOct29." Timestamp : ".$dateOct29Timestamp." Formatted ('Y-m-d Z T'): ".date('Y-m-d Z T',$dateOct29Timestamp)."</br>";
echo "Result of date('I',timestamp) : ". $checkDayLightSavingOct29."</br>";
$dateOct30='2011-10-30';
$dateOct30Timestamp=strtotime($dateOct30,time());
$checkDayLightSavingOct30=date('I',$dateOct30Timestamp);
echo "Date : ".$dateOct30." Timestamp : ".$dateOct30Timestamp." Formatted ('Y-m-d Z T'): ".date('Y-m-d Z T',$dateOct30Timestamp)."</br>";
echo "Result of date('I',timestamp) : ". $checkDayLightSavingOct30."</br>";
$dateOct31='2011-10-31';
$dateOct31Timestamp=strtotime($dateOct31,time());
$checkDayLightSavingOct31=date('I',$dateOct31Timestamp);
echo "Date : ".$dateOct31." Timestamp : ".$dateOct31Timestamp." Formatted ('Y-m-d Z T'): ".date('Y-m-d Z T',$dateOct31Timestamp)."</br>";
echo "Result of date('I',timestamp) : ". $checkDayLightSavingOct31."</br>";
$dateNov01='2011-11-01';
$dateNov01Timestamp=strtotime($dateNov01,time());
$checkDayLightSavingNov01=date('I',$dateNov01Timestamp);
echo "Date : ".$dateNov01." Timestamp : ".$dateNov01Timestamp." Formatted ('Y-m-d Z T'): ".date('Y-m-d Z T',$dateNov01Timestamp)."</br>";
echo "Result of date('I',timestamp) : ". $checkDayLightSavingNov01."</br>";

?>

打印如下内容:

Timezone = Europe/Dublin

日期:2011-10-29时间戳:1319842800格式('Y-m-d Z T'): 2011-10-29 3600 IST

Result of date('I',timestamp): 1

日期:2011-10-30时间戳:1319929200格式('Y-m-d Z T'): 2011-10-30 3600 IST

Result of date('I',timestamp): 1

Date: 2011-10-31 Timestamp: 1320019200 format ('Y-m-d Z T'): 2011-10-31 0 GMT

Result of date('I',timestamp): 0

Date: 2011-11-01 Timestamp: 1320105600 format ('Y-m-d Z T'): 2011-11-01 0 GMT

Result of date('I',timestamp): 0

10月30日使用夏令时到凌晨3点左右。因为你的时间是在午夜,这是在夏时制改变之前,因此30日被标记为夏时制。尝试将时间设置为上午10点,应该会得到正确的结果。