我正在尝试将以下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
有什么方法可以让它转换成我期待的风格?另外,如果我要将时区添加到最后是否有任何方法可以解决这个问题?
答案 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