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
)