rog*_*ver 8 php format timestamp
PHP - DateTime :: createFromFormat - 返回根据指定格式格式化的新DateTime对象
这工作:
$var = DateTime::createFromFormat('Ymd','20100809')->getTimestamp();
Run Code Online (Sandbox Code Playgroud)
但这失败了
在非对象上调用成员函数getTimestamp()
$var = DateTime::createFromFormat('Y/m/d H:M:S','2010/08/09 07:47:00')->getTimestamp();
Run Code Online (Sandbox Code Playgroud)
Pek*_*ica 15
在手头的情况下,该M:S部分是错误的.它需要i:s.请参阅日期手册().
但是,这突出了一个更深层的概念问题:任一参数中的错误输入都将导致致命错误,这对于生产中的应用程序来说是不良行为.
从手册上createFromFormat:
返回新的DateTime实例或失败时返回FALSE.
当调用无法根据您的输入构建日期时,不会返回任何对象.
为了避免错误输入上的致命错误,你会(遗憾的是,因为这打破了很好的链接)必须首先检查成功:
$var = DateTime::createFromFormat('Y/m/d H:M:S','2010/08/09 07:47:00');
if ($var instanceof DateTime)
echo $var->getTimestamp();
Run Code Online (Sandbox Code Playgroud)
它应该是
DateTime::createFromFormat('Y/m/d H:i:s','2010/08/09 07:47:00')->getTimestamp()
^ ^
Run Code Online (Sandbox Code Playgroud)
请参阅date使用的格式.
你也可以strtotime在这种情况下使用.这会得到相同的结果:
strtotime('2010/08/09 07:47:00')
Run Code Online (Sandbox Code Playgroud)
其他方式:
date_create('2010/08/09 07:47:00')->getTimestamp()
Run Code Online (Sandbox Code Playgroud)
请注意,错误时DateTime::createFromFormat返回FALSE.您可以使用以下方式获取错误DateTime::getLastErrors():
<?php
$d = DateTime::createFromFormat('Y/m/d H:M:S','2010/08/09 07:47:00');
var_dump($d);
var_dump(DateTime::getLastErrors());
Run Code Online (Sandbox Code Playgroud)
会给:
bool(false)
array(4) {
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(3)
["errors"]=>
array(1) {
[14]=>
string(13) "Trailing data"
}
}