我是PHP的新手,在基础知识方面有点吃力,请原谅即将出现的可怕代码。
我要做的是解析从XML文件中检索到的日期,并查看该日期是否在星期一/星期二等。
我似乎做得不对,我们非常感谢你的帮助。
<?php
foreach ($xml as $x)
{
$time = strtotime($x->Start);
echo $time;
if(date('D', $time) === 'Mon')
echo "Booking for Monday";
else if(date('D', $time) === 'Tue')
echo "Booking for Tuesday";
else if(date('D', $time) === 'Wed')
echo "Booking for Wednesday";
else if(date('D', $time) === 'Thu')
echo "Booking for Thursday";
else if(date('D', $time) === 'Fri')
echo "Booking for Friday";
}
?>
$time没有输出任何内容,返回的唯一结果是每个XML记录(x5)的"Booking for Thursday",尽管只有两个记录落在一个星期四。
如果我通过以下方式输出结果:
echo $x->Start;
工作正常,输出"2013年7月15日上午9:3:00"。
干杯!
日期看起来像European format d-m-y
,使用American format m/d/y
分隔符。
注:
m/d/y或d-m-y格式的日期通过查看各种组件之间的分隔符:如果分隔符是斜线(/),则假定为美国m/d/y;而如果分隔符是短划线(-)或点(.),然后是欧洲d-m-y格式假设。
代替
$time = strtotime($x->Start);
尝试
$time = strtotime(str_replace('/','-',$x->Start));
附加信息:PHP手册
在将时间字符串($x->Start)传递给strtotime之前,必须将其转换为支持的格式之一。
替换/使用。会将您的日期更改为支持格式。但要仔细检查才能确定。
$time = strtotime(str_replace('/', '.',$x->Start));
我知道你已经有了一个公认的答案,但我强烈建议你看看PHP的DateTime类。它们非常有用,可以使看似复杂的日期操作变得微不足道。
在您的特殊情况下,我会替换:-
$time = strtotime($x->Start);
带有:-
$time = DateTime::createFromFormat('d/m/Y H:i:s a', $x->Start);
然后,您可以使用DateTime::format()
方法按照自己的意愿设置日期格式。