2011-10-31 260 views
0

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

我想确定一个日期是否使用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格式化('Ymd Z T'):2011-10-29 3600 IST

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

日期:2011-10-30时间戳:1319929200格式化( 'YMDŽT'):日期2011-10-30 3600 IST

结果( 'I',时间戳):1个

日期: 2011-10-31时间戳:1320019200格式化( 'YMDžT'):2011-10-31 0 GMT

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

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

d ('I',时间戳):0

回答

0

10月30日使用DST时间大约凌晨3点。由于你的时间是在午夜,所以这是在DST变化之前,因此30日被标记为具有DST。尝试设置时间到上午10点,并应该给出正确的结果。

+0

感谢您的超级快速回答,我们阅读时在房间里听到了集体答案。 –