DST,夏令时的PHP错误检查

时间:2011-10-31 14:15:47

标签: php date dst

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

我正在尝试确定日期是否使用DST。为此,我假设2011年10月30日不使用DST,因为该日期发生了切换..这是正确的吗?

这是代码(我希望10月30日不使用DST):

<?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>";


?>

这将打印以下内容:

时区=欧洲/都柏林

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

日期结果('I',时间戳记):1

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

日期结果('I',时间戳记):1

日期:2011-10-31时间戳:1320019200格式化('Y-m-d Z T'):2011-10-31 0 GMT

日期结果('I',时间戳记):0

日期:2011-11-01时间戳:1320105600格式化('Y-m-d Z T'):2011-11-01 0 GMT

日期结果('I',时间戳记):0

1 个答案:

答案 0 :(得分:0)

10月30日使用DST到凌晨3点左右。由于您的时间是午夜,这是在DST更改之前,因此30日被标记为具有夏令时。尝试将时间设置为上午10点,这应该会给出正确的结果。