我有一个PHP脚本,它从RSS源中提取并根据事件生成一系列输出。该脚本工作正常,直到上周夏令时发生变化。
脚本正在处理RSS源,其日期如下所示:
pubDate:星期四,04四月2013 19:05:00 GMT
我需要为每一天和每个时间创建不同的php脚本,所以我使用了以下内容:
$expiry = $item->pubDate;
$expiryLenght = strlen("$expiry");
$timeStart = $expiryLenght - 12;
$time = substr("$expiry","$timeStart", 5);
$hour = substr("$time",0, 2);
$day_alpha = substr("$expiry",0, 3);
$day = substr("$expiry",5, 2);
$month = substr("$expiry",8, 3);
$year = substr("$expiry", 12, 4);
$month = strtolower($month);
$month_num = monthNum($month);
对我来说重要的部分是“$ hour”行。我需要尝试将其调整为夏令时。 pubDate始终处于GMT未调整状态。
我在考虑定义夏令时的路线,如果它在时间范围内,则每小时加1。但是,我不确定这是一个很好的解决方案。
任何帮助将不胜感激, 戴夫。
在评论的帮助下,我最终使用了这个
$expiry1 = $item->pubDate;
$ expiry = date('D,d M Y H:i:s \ off',strtotime($ expiry1。“Europe / Dublin”));
有点hackjob,但它将Expiry恢复为以前的格式,这意味着其余的代码可以解决它。
答案 0 :(得分:0)
<?php
$expiry = "Thu, 04 Apr 2013 19:05:00 GMT";
echo date('l jS \of F Y h:i:s A', strtotime($expiry . " America/New_York"));
?>
答案 1 :(得分:0)
我现在正在工作,所以不能测试这个,但我相信你想做这些事情:
<?php
$timestring = 'Thu, 04 Apr 2013 19:05:00 GMT';
$mytimezone = new DateTimeZone('Pacific/Nauru');
$datetime = date_create_from_format('D, d M Y h:i:s T', $timestring, $mytimezone);
echo $datetime->format('Y-m-d H:i:sP');
这将根据您指定的格式创建一个DateTime对象,但使用您选择的时区。因此,您选择时区,它会从RSS源中解析日期/时间并将其转换为您选择的时区。
它的代码也比你目前所做的少得多。 : - )