根据XML构建PHP字符串

时间:2009-08-02 22:43:38

标签: php xml string time

我正在尝试将以下XML转换为时间:

 <time hour="18" minute="05" timezone="Eastern" utc-hour="-4" utc-minute="00" /> 

我正在使用SimpleXML解析XML,并将其存储在类中。我也尝试打印出以下内容:

print strtotime($x->time->attributes()->hour . ":" . $x->time->attributes()->minute) . "<br>\n";

我从那张照片中得到的结果看起来像这样:

1249254300

我想我期待的结果可能是 18:05 6:05 PM

有什么方法可以让它转换成我期待的风格?另外,如果我要将时区添加到最后是否有任何方法可以解决这个问题?

3 个答案:

答案 0 :(得分:4)

我建议不要在这里使用strtotime。而是尝试mktime

$time=mktime($x->time->attributes()->hour,$x->time->attributes()->minute,0,0,0,0)

您还需要格式化时间戳(打印出来的是unix表示)。您可以使用date函数执行此操作。

date("H:i", $time);

答案 1 :(得分:1)

您可以将其带入strtotime()理解的形式(包括时区信息)

<?php
$x = new SimpleXMLElement('<x>
    <time hour="18" minute="05" timezone="Eastern" utc-hour="-4" utc-minute="00" />
</x>');

$ts = sprintf('%02d:%02d %+03d%02d', $x->time['hour'], $x->time['minute'], $x->time['utc-hour'], $x->time['utc-minute']);
$ts = strtotime($ts);
echo gmdate(DateTime::RFC1123, $ts), "\n", date(DateTime::RFC1123, $ts);

我的本​​地时区是CET / CEST(在这种情况下为utc + 2),因此脚本打印

Mon, 03 Aug 2009 22:05:00 +0000
Tue, 04 Aug 2009 00:05:00 +0200

答案 2 :(得分:1)

strToTime函数将以字符串格式识别日期或时间,然后将其转换为Unix时间戳(自Unix时代以来的秒数(Unix时期为1970年1月1日午夜,UTC) )。

所以,你需要做的是取得strToTime function, and use the date function to format them in a more human readable way

date


的结果

可以找到完整的格式选项the date entry on php.net