Gag*_*gan 0 php laravel laravel-4 php-carbon
我有一个日期时间字符串14/04/2014 4:57:16 PM,我正在使用碳日期时间来处理它.
但是,一旦我尝试这样做
$dt = Carbon::createFromTimestampUTC($encDateTime);
Run Code Online (Sandbox Code Playgroud)
但是我得到了解析错误:DateTime :: __ construct():无法解析时间字符串(@ 14/04/04 2014 5:03:45 PM)位置3(/):意外的字符.
Udpate: 我试过这样做:
$date = DateTime::createFromFormat('d/m/Y H:i A', $encDateTime);
dd($date->format('Y-m-d H:i:s'));
Run Code Online (Sandbox Code Playgroud)
我得到以下错误 调用非对象上的成员函数format()
你能帮我解决这个问题吗?
谢谢
您的日期字符串在末尾包含一个空格 - 这就是DateTime::createFromFormat()无法解析它的原因.要从开头和/或结尾删除额外的空格,您可以使用trim().
此外,您最初使用的H是24小时格式,带有前导零.在这种情况下,看起来你有一个12小时的格式,所以g改为使用(h也可以使用).
以下应该有效:
$date = DateTime::createFromFormat('d/m/Y g:i:s A', trim($encDateTime));
Run Code Online (Sandbox Code Playgroud)
当您收到此类错误时,请始终使用var_dump()这些值.这样,您可以检查变量是否包含您认为它的作用.
createFromFormat来自DateTime 的静态方法NULL在出现解析错误时返回.给出的格式(d/m/Y H:i A)是错误的.因此错误" 调用format()非对象上的成员函数 ".
您可以从非标准时间字符串创建DateTime对象,如下所示:
$time = '14/04/2014 4:57:16 PM';
$date = Carbon\Carbon::createFromFormat('d/m/Y g:i:s A', $time);
Run Code Online (Sandbox Code Playgroud)
可以在文档中date()找到可用的不同格式字符及其说明.
我对Carbon一无所知,但这很有效.您在createFromFormat方法中使用了两位数(H)而不是h(编辑:g是完全相同的东西):
$encDateTime = "14/04/2014 4:57:16 PM";
$date1 = DateTime::createFromFormat('d/m/Y h:i:s A', trim($encDateTime));
echo $date1->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)
结果:
2014-04-14 16:57:16
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13541 次 |
| 最近记录: |