我使用以下格式Y-m-d\TH:i:s.v\Z来遵循JavaScript toISOString实现(2011-10-05T14:48:00.000Z).
如果我有一个DateTime并且我想格式化它,一切正常,但是我不能解析使用这种格式的字符串.
$format = 'Y-m-d\TH:i:s.v\Z';
$stringDateTime = (new \DateTime())->format($format);
var_dump(date_create_from_format($format,$stringDateTime));
Run Code Online (Sandbox Code Playgroud)
我正在使用PHP 7,我已经使用PHP 7.0,7.1和7.2测试了上面的代码.我期望在第3行中返回的是一个DateTime类,但是false由于存在解析问题,我得到了一个.
我希望有人可以澄清这种行为.谢谢
Datetime会很好地处理它,你不需要从格式创建.
<?php
$format = 'Y-m-d\TH:i:s.v\Z';
$stringDateTime = (new \DateTime())->format($format);
var_dump(date_create($stringDateTime));
Run Code Online (Sandbox Code Playgroud)
结果:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2018-03-13 18:07:30.005000"
["timezone_type"]=>
int(2)
["timezone"]=>
string(1) "Z"
}
Run Code Online (Sandbox Code Playgroud)
这也有效:
<?php
$format = 'Y-m-d\TH:i:s.u\Z';
$stringDateTime = (new \DateTime())->format($format);
var_dump(date_create_from_format($format, $stringDateTime));
$format = \DateTime::ISO8601;
$stringDateTime = (new \DateTime())->format($format);
var_dump(date_create_from_format($format, $stringDateTime));
Run Code Online (Sandbox Code Playgroud)
object(DateTime)#1 (3) {
["date"]=>
string(26) "2018-03-13 18:15:10.011717"
["timezone_type"]=>
int(3)
["timezone"]=>
string(16) "Europe/Amsterdam"
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2018-03-13 18:15:10.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+01:00"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |