2013-05-27 61 views
0

我begain這個任務搶的日期,該文件被更新HERE但考慮到在這個問題上我打了幾個路障我有限的知識。解析XML數據到PHP,並設置時區基於差異

  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); 

回答

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

不能與時區-問題,不是我的領域幫助。

+0

非常感謝您的回覆,我正在努力! –

+0

啊,我很接近大聲笑!非常感謝我會給你一張支票,看看有沒有人在這個時區有任何輸入! –

+1

@tman:可能有用:http://stackoverflow.com/questions/5639733/changing-current-user-timezone-based-on-server-utc-offset-and-user-utc-offset?rq=1 – michi