尝试使用
现在,当我尝试从相同的格式解析该字符串时
DateTime::createFromFormat
解析日期时,PHP无法识别时区。
示例:
$t = new \DateTime();
echo $t->format('Y-m-dTH:i:s');
将输出
2012-01-24MSK16:53:52
现在,当我尝试从相同的格式解析该字符串时
var_dump(\DateTime::createFromFormat('Y-m-dTH:i:s', '2012-01-24MSK16:53:52'));
我理解
bool(false)
如果我不在字符串中加入时区,它就能正常工作。
$t = new \DateTime();
echo $t->format('Y-m-dH:i:s');
将会给予
2012-01-2417:17:24
并解析它
var_dump(\DateTime::createFromFormat('Y-m-dH:i:s', "2012-01-2417:17:24"));
将会给予
object(DateTime)#3 (3) {
["date"]=>
string(19) "2012-01-24 17:17:24"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Moscow"
}
测试环境如下:
- PHP 5.3.6-13ubuntu3.3,带有Suhosin补丁 (cli) (构建日期:2011年12月13日 18:18:37)
- PHP 5.3.9 (cli) (构建日期:2012年1月18日 20:02:33)
只有在考虑时区时才会出现问题。这是一个Bug吗?还是我做错了什么?谢谢!
Y-m-dTH:i:s
是什么格式?你是不是想要Y-m-d\TH:i:s
? - salathe