2014-10-17 125 views
1

我有这样的日期/时间格式:正确的PHP日期/时间模式

Fri, 17 Oct 2014 22:12:51 +3:30 

我知道,正确的方式是:

'D, d M Y H:i:s P' 

,但在使用时,此错误此遭遇:

Impossible to guess date format : 
Fri, 17 Oct 2014 22:12:51 +3:30 

我认为这个错误发生,因为+3:30(北京时间)是不正确的,真正是+03:30。我不知道如何解决它?! (我在symfony中使用debril_rss_atom M代表RSS阅读,网站的RSS有一个发布日期属性,并debril有一部分根据模式:)

public function load(array $configs, ContainerBuilder $container) 
    { 
     $configuration = new Configuration(); 
     $config = $this->processConfiguration($configuration, $configs); 

     $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); 
     $loader->load('services.xml'); 

     $default = array(
      \DateTime::RFC3339, 
      \DateTime::RSS, 
      \DateTime::W3C, 
      'Y-m-d\TH:i:s.uP', 
      'Y-m-d', 
      'd M Y H:i:s +O', 
      'D, d M Y H:i:s', 
      'D, d M Y H:i:s +P', 
      'D, d M Y H:i:s +O', 

     ); 

     if (!isset($config['date_formats'])) 
     { 
      $container->setParameter(
        'debril_rss_atom.date_formats', $default 
      ); 
     } else 
     { 
      $container->setParameter(
        'debril_rss_atom.date_formats', array_merge($default, $config['date_formats']) 
      ); 
     } 
    } 
+1

请添加代码示例,以帮助他人重现你的错误 – 2014-10-17 20:53:06

+0

你在你的格式标识符没有“+”尝试,因为“P”选项已经包含了吗? – 2014-10-17 21:03:51

+0

我用+和不用+来测试它。 – 2014-10-17 21:05:29

回答

1

你的所有格式阅读发布日期是标准的,所以没有必要猜测格式,DateTime能够这样做,对自己的多:

$dt = new DateTime('Fri, 17 Oct 2014 22:12:51 +3:30'); 
print_r($dt); 

在你的方法load()你已经使用格式+O+P这是不正常。 OP也考虑到加/减之前的时区偏移,因此无需为格式之前指定的标志。

+0

我知道这一点,但如果我不加+,给我一个错误。 (我美好的这个?!),我解决了去除+3我的问题:从pubDate.Thankyou – 2014-10-19 12:12:15

+0

@RoohbakhshMasoud 30:你能告诉我您会收到错误? – 2014-10-19 14:54:53

+0

无法猜测日期格式: 2014年10月19日星期日23:24:15 +3:30 500内部服务器错误 - ParserException – 2014-10-19 20:57:47