0

我是 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 am”。

干杯!

4

3 回答 3

3

日期看起来像European format d-m-y并使用American format m/d/y分隔符。

笔记:

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

代替

$time = strtotime($x->Start);

尝试

$time = strtotime(str_replace('/','-',$x->Start));

附加信息:PHP 手册

于 2013-07-17T02:54:12.867 回答
1

在将时间字符串($x->Start)传递给 strtotime 之前,您必须将其转换为受支持的格式之一。

替换 / 与 . 会将您的日期更改为支持格式。但请仔细检查以确保。

$time = strtotime(str_replace('/', '.',$x->Start));
于 2013-07-17T02:56:48.973 回答
0

我看到你已经有了一个公认的答案,但我强烈建议你看看PHP 的 DateTime classes。它们非常有用,可以使看似复杂的日期操作变得微不足道。

在您的特定情况下,我将替换:-

$time = strtotime($x->Start);

和:-

$time = \DateTime::createFromFormat('d/m/Y H:i:s a', $x->Start);

然后,您可以使用该\DateTime::format()方法根据需要格式化日期。

于 2013-07-17T13:15:50.620 回答