将Datetime转换为PHP
-
02-01-2020 - |
题
我有这样的datetime字符串 14/04/2014 4:57:16 PM
我正在使用carbon datetime来处理它。
但是,只要我尝试这样做
$dt = Carbon::createFromTimestampUTC($encDateTime);
但是我得到解析错误 :日期时间::__构造():未能解析位置3(/)的时间字符串(@14/04/20145:03:45):意外的性格。
[医]乌德帕特 : 我试过这样做 :
$date = DateTime::createFromFormat('d/m/Y H:i A', $encDateTime);
dd($date->format('Y-m-d H:i:s'));
我得到以下错误 调用非对象上的成员函数format()
你能帮我解决这个问题吗?
谢谢
解决方案
您的日期字符串在末尾包含一个空格-这就是为什么 DateTime::createFromFormat()
解析失败。要从开头和/或结尾删除额外的空格,您可以使用 trim()
.
另外,你最初使用的是 H
, ,这是带有前导零的24小时格式。在这种情况下,它看起来像你有一个12小时的格式,所以使用 g
相反(h
会工作,太)。
以下应该起作用:
$date = DateTime::createFromFormat('d/m/Y g:i:s A', trim($encDateTime));
当您收到此类错误时, 永远如此 var_dump()
价值观.这样,您可以检查变量是否包含您认为它的功能。
其他提示
静态方法 createFromFormat
从日期时间返回 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()
.
我对碳的任何东西都不了解,但这有用。您使用的是两个数字(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
.
刚使用 laravel 日期函数为:
$productsales=DB::table('tbl_trans')
->leftjoin('tbl_product','tbl_product.prod_id','=','tbl_trans.product_id')
->select(DB::raw('count(product_id) as quant'),'product_id','tbl_product.name','tbl_product.code','tbl_product.price')
->groupBy('product_id','code','name','price')
->whereDate('tbl_trans.created_at','2017-07-29')
->get();
return view('reports.productsales',compact('productsales'));
. 不隶属于 StackOverflow