2014-11-08 32 views
0

我曾經使用此代碼在我的網頁上顯示自動出售日期和時間的票證,但幾個月前它剛剛停止工作並打破了我的整個頁面。我有一個日期,我選擇哪個是「onsale」。如果今天的日期在此之前,它應該顯示在下面。有什麼想法嗎?DateTime :: createFromFormat停止運作

 <?php  

      $date = DateTime::createFromFormat('Ymd', get_field('onsale')); 
       echo $date->format('D, M d'); 
       echo get_field('onsale_time'); 

      } 
      else { echo get_field('price'); 
      } 
     ?> 

如果我刪除

$date = DateTime::createFromFormat('Ymd', get_field('onsale')); 
echo $date->format('D, M d'); 

它不會打破。我使用PHP 5.4.24

這裏是整款

<?php $onsale_date = strtotime(get_field('onsale')); 
      $now = time(); 

    if ($onsale_date) { ?> 

    <div class="event-ticket-link"> 

     <div class="cost"> 


     <?php 
      if ($onsale_date > $now) { 
     ?> 

     On Sale 

     <?php  

      $date = DateTime::createFromFormat('Ymd', get_field('onsale')); 
       echo $date->format('D, M d'); 
       echo get_field('onsale_time'); 

      } 
      else { echo get_field('price'); 
      } 
     ?> 

     </div> 

     <h4 class="buy-tickets"><a href="<?php the_permalink(); ?>#tickets">Get Tickets</a></h4> 

     </div> 

     <?php } ?> 
+0

'get_field('onsale')'的值是什麼? – Barmar 2014-11-08 20:18:15

+1

事情不僅僅是'停止工作',並且在PHP的情況下,如果函數有問題,那麼服務器錯誤日誌中將會出現錯誤或警告。在服務器日誌中發佈任何錯誤,並在這個「停止工作」時更改你所改變的內容 – 2014-11-08 20:20:10

+0

這是一個顯示yymmdd格式的JQuery日期選擇器。這個特定的是141121 – 2014-11-08 20:24:56

回答

0

有一些代碼可能已經停止工作兩方面的原因:

  • 輸入已經改變。在你的情況下,get_field('onsale')可能已經改變。它應該有「Ymd」格式:檢查get_field('onsale')看起來像YYYYmmdd,例如20141108爲今天的日期
  • 配置更改:也許你更新了PHP,它現在需要您在使用DateTime家庭功能之前設置區域設置,也許服務器區域設置更改...(可能會發生類似這樣的事情,特別是對於日期功能:他們對配置很敏感)。
+0

我使用Wordpress作爲我的CMS和自定義字段插件。用於「onsale」字段的日期選擇器是其中的一部分。當我升級插件時,停止工作。其他自定義字段仍然顯示正常,但DateTime格式停止。 – 2014-11-08 20:45:12