当前位置:  开发笔记 > 编程语言 > 正文

将Datetime转换为PHP

如何解决《将Datetime转换为PHP》经验,为你挑选了3个好方法。

我有一个日期时间字符串14/04/2014 4:57:16 PM,我正在使用碳日期时间来处理它.

但是,一旦我尝试这样做

$dt = Carbon::createFromTimestampUTC($encDateTime);

但是我得到了解析错误: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'));

我得到以下错误 调用非对象上的成员函数format()

你能帮我解决这个问题吗?

谢谢



1> Amal Murali..:

您的日期字符串在末尾包含一个空格 - 这就是DateTime::createFromFormat()无法解析它的原因.要从开头和/或结尾删除额外的空格,您可以使用trim().

此外,您最初使用的H是24小时格式,带有前导零.在这种情况下,看起来你有一个12小时的格式,所以g改为使用(h也可以使用).

以下应该有效:

$date = DateTime::createFromFormat('d/m/Y g:i:s A', trim($encDateTime));

当您收到此类错误时,请始终使用var_dump()这些值.这样,您可以检查变量是否包含您认为它的作用.



2> hannesvdvrek..:

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);

可以在文档中date()找到可用的不同格式字符及其说明.



3> skrilled..:

我对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');

结果:

2014-04-14 16:57:16

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有