Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-DateTime::createFromFormat似乎找不到该模式_Php_Datetime_Format - Fatal编程技术网

PHP-DateTime::createFromFormat似乎找不到该模式

PHP-DateTime::createFromFormat似乎找不到该模式,php,datetime,format,Php,Datetime,Format,我有以下日期:(美国东部时间星期二上午7:00) [error_count] => 1 [errors] => Array ( [16] => Data missing ) 现在,为了将其格式更改为2014-01-21 7:00,我使用了DateTime:createFromFormat()和DateTime::format()。但是,它似乎没有在上面提到的字符串中找到模式 [error_count] => 1 [errors] =>

我有以下日期:
(美国东部时间星期二上午7:00)

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
现在,为了将其格式更改为
2014-01-21 7:00
,我使用了
DateTime:createFromFormat()
DateTime::format()
。但是,它似乎没有在上面提到的字符串中找到模式

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
代码如下:

<?php

$date = DateTime::createFromFormat('(D g:iA T)', '(Tue 7:00AM EST)');
if($date !== false) {
    var_dump($date->format('Y-m-d H:i'));
} else {
    echo 'Invalid date!';
}

?>

Prints: Invalid Date!
[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )

打印:无效日期!
修剪支架:

$date = DateTime::createFromFormat('D g:iA T', trim('(Tue 7:00AM EST)', '()'));
[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
打印(日期时间::getLastErrors(),1)给了我:

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
排列( [警告\u计数]=>0 [警告]=>阵列 ( )

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
)

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
这意味着在字符串(美国东部时间星期二上午7:00)的索引16处缺少数据(在最后一个括号处)

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
回声打印(DateTimeZone::listIdentifiers())列出以下时区

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
所以没有列出EST。然而,
$date=DateTime::createFromFormat('T','EST')$date=DateTime::createFromFormat('(T)'(EST)')相比,code>工作没有问题

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
我无法使这个例子真正起作用,但也许我提到的想法可以帮助你

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
顺便说一句:以下几点对我很有用:

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
  • 移除支架(可能是最简单的解决方案)
  • $date=DateTime::createFromFormat('(DG:iA)',(星期二上午7:00)'(无时区)

您不需要删掉括号,您的日期格式可以由
\DateTime::createFromFormat()
解析,没有任何问题:-

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
$dateStr = "(Tue 7:00AM EST)";
$date = \DateTime::createFromFormat("(D g:iA T", $dateStr);
var_dump($date);
您会注意到技巧是省略尾随的

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
输出:-

[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )
object(DateTime)[1]
  public 'date' => string '2014-01-21 07:00:00' (length=19)
  public 'timezone_type' => int 2
  public 'timezone' => string 'EST' (length=3)

还有。

的手册。你试过
trim
ming out the方括号吗?@AdamHopkinson成功了,谢谢!没问题。我添加了它作为答案,如果支持happyEST,请接受它。如果不支持时区,则会出现错误:
在数据库中找不到时区,如下所示。
[error_count] => 1
[errors] => Array
    (
        [16] => Data missing
    )