0

我开始寻求在此处获取本文档的更新日期,但鉴于我对这个主题的了解有限,我遇到了一些障碍。

  1. 如何达到我想要的实际时间戳。

上述 XML 文件的片段如下所示:

     <data type="current observations">
         <time-layout time-coordinate="local">
              <start-valid-time period-name="current">2013-05-27T13:53:00-04:00</start-valid-time>
         </time-layout>
      </data>

我尝试了以下操作,但收到了无效的表达式警告。

  $weather = simplexml_load_file('http://...');
  $time=$weather->xpath('//data[@type="current observations"]/"time-layout"/"start-valid-   time"');
  echo $time[0];

希望得到以下信息:2013-05-27T13:53:00-04:00

接下来我尝试基于此设置默认时区。我知道时间戳背面的 -04:00 表示与 UTC 的差异。以下是我一起破解的一个解决方案,它可以工作,但我并不喜欢这种方法,所以任何关于如何更好地做到这一点的改进或建议都会更好。

  $time_UTC= substr($time,0,-6);
  $offset = substr($time,19,-3);
  $offsetfloat = (float)$offset;
  $timezoneName = timezone_name_from_abbr("", $offsetfloat*3600, false);
  date_default_timezone_set($timezoneName);
4

1 回答 1

1

对于您的 xpath 问题-您几乎就在那里,请尝试:

$time = $weather->xpath("//data[@type='current observations']/time-layout/start-valid-time");
echo $time[0];

对于 PHP >= 5.4,这样做只获取第一个元素:

$time = $weather->xpath("//data[@type='current observations']/time-layout/start-valid-time")[0];
echo $time;   

看到它工作:http ://codepad.viper-7.com/PqPnzY

无法解决时区问题,而不是我所在的地区。

于 2013-05-27T20:54:47.537 回答