我是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)的“星期四预订”,尽管只有两个记录在星期四。
如果我输出结果:
echo $x->Start;
工作正常并输出“15/07/2013 9:30:00 a。”。
干杯!
答案 0 :(得分:3)
日期看似European format d-m-y
,并使用American format m/d/y
分隔符。
注意:
通过查看,可以消除m / d / y或d-m-y格式的日期 各个组件之间的分隔符:如果分隔符是a 斜线(/),然后是美国m / d / y;而如果 separator是短划线( - )或点(。),然后是欧洲d-m-y格式 假定。
而不是
$time = strtotime($x->Start);
尝试
$time = strtotime(str_replace('/','-',$x->Start));
其他信息:PHP Manual
答案 1 :(得分:1)
在将时间字符串($ x-&gt; Start)转换为Supported Formats之一之前,必须先将其转换为strtotime。
更换/用。会将您的日期更改为支持格式。但仔细检查一下。
$time = strtotime(str_replace('/', '.',$x->Start));
答案 2 :(得分:0)
我看到你已经接受了答案,但我强烈建议您查看PHP's DateTime classes。它们非常有用,可以使看似复杂的日期操作变得微不足道。
在您的特定情况下,我会替换: -
$time = strtotime($x->Start);
使用: -
$time = \DateTime::createFromFormat('d/m/Y H:i:s a', $x->Start);
然后,您可以使用\DateTime::format()
方法格式化日期。