我遇到了一个问题,我 99% 确信它与昨天开始的夏令时有关。
以下脚本:
<?php
$i=1383451200;
echo $i, " ", date('Y-m-d I', @$i);
echo "\n";
$i = $i + 86400;
echo $i, " ", date('Y-m-d I', @$i);
echo "\n";
?>
(其中 86400 是一天的秒数)
给出以下输出
1383451200 2013-11-03 1
1383537600 2013-11-03 0
2 个时间戳,以一天中的秒数分隔,输入到 date() 中,给出相同的日期 2013-11-03
由于现在是 2013 年 11 月 3 日,而且我知道我们已切换到夏令时,并且 I 格式说明符指示一个时间戳处于 DST,而另一个时间戳则不是,我认为可以肯定地说我的系统配置有误。
问题是,如何解决?我已经做了:
pecl 安装 timezonedb
并将以下内容添加到 php.ini
扩展名=/usr/lib/php5/20100525/timezonedb.so
在我的系统上。
我的系统是 Macbook Pro 上的 Ubuntu 12.10,我使用的是 php 5
有什么建议如何解决这个问题吗?
这就是我正在尝试做的事情。我想打印一个月中每一天的日期。
$startTime = strtotime($start);
$endTime = strtotime($end);
其中 $start 和 $end 是 YYYY-MM-DD 形式的字符串(用户可以指定它们)
每月的具体天数计算如下:
for ($i = $startTime; $i <= $endTime; $i = $i + 86400) {
$thisDate = date('Y-m-d', $i);
}
我希望它打印出该月中从可能的用户指定范围的开始到结束的每一天的日期。
Mark