2014-11-08 29 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