如何使用PHP的strtotime

时间:2013-07-17 02:44:51

标签: php date time strtotime

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

干杯!

3 个答案:

答案 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()方法格式化日期。