我有这样的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'));
.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top