2013-07-17 51 views
0

我是新來的PHP和基本的努力,請原諒可怕的代碼來。如何使用PHP的strtotime

我想要做的是解析從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"; 
    } 

?> 

$時間不輸出任何東西,回來唯一的結果就是,儘管只有兩個掉落在週四的記錄「預定星期四」每個XML記錄(X5)。

如果我輸出的結果是:

echo $x->Start; 

這工作正常,並輸出 「15/07/2013上午九點30分00秒」。

乾杯!

+0

不幸的是,表示你的日期的字符串不在公認的PHP日期/時間字符串格式列表http://www.php。net/manual/en/datetime.formats.compound.php –

+0

我想你會需要操縱它一下。我會盡力想出一些東西來幫助你。 –

+0

謝謝@CaseyFlynn,問題解決如下。 :) – LKB

回答

3

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

注:

日期在M/d/y或DMY格式通過查看 的各種組件之間的分隔符消除歧義:如果分離器是 斜槓(/),則美國假定m/d/y;而如果 分隔符是破折號( - )或點(。),則假定歐洲的d-m-y格式爲 。取而代之的

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

嘗試

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

附加信息:PHP Manual

+0

工程就像一個魅力!謝謝!我會記住這一個。 :) – LKB

1

你有你的時間字符串($ X->啓動)轉換爲Supported Formats之一然後傳遞給時間。

替換/帶。會將您的日期更改爲支持格式。但仔細檢查確定。

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

我看你已經有一個公認的答案,但我會強烈建議你看一看PHP's DateTime classes。它們非常有用,可以使看似複雜的日期操作變得微不足道。

你的具體情況,我將取代: -

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

有: -

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

然後,您可以格式化日期,你想使用\DateTime::format()方法。