正确的php日期/时间模式

时间:2014-10-17 20:51:14

标签: php datetime

我有这个日期/时间格式:

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(GMT)不是真,而真是+03:30。我不知道如何解决它?! (我在symfony中使用debril_rss_atom来读取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 个答案:

答案 0 :(得分:1)

您的所有格式都是标准格式,因此无需猜测格式,DateTime能够自行完成此操作:

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

在您的方法load()中,您使用了格式+O+P,这是不正常的。 OP还考虑了时区偏移之前的加/减,因此无需在格式之前指定符号。