質問

そのような14/04/2014 4:57:16 PMとしてDateTime文字列を持ち、炭素Datetimeを使用して動作します。

しかし私がこれをやろうとするとすぐに

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

しかし、私は解析エラーを取得しています:DateTime :: __ construct():Parse Time String(@ 14/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'));
.

そして私は次のエラーを得ます オブジェクト以外のメンバー関数形式()への呼び出し

これを手伝ってください。

ありがとう

役に立ちましたか?

解決

あなたの日付文字列にはendのスペースが含まれています - それがDateTime::createFromFormat()が解析に失敗する理由です。先頭および/または終了から余分な空白を削除するには、 trim() を使用できます。

また、もともとHを使用していました。これは、先行ゼロを持つ24時間形式です。この場合、12時間の形式があるように見えます。代わりにgを使用します(hも機能します)。

次は機能するべきです:

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

そのようなエラーを受けたとき、 常に var_dump() 。そのように、変数にあなたがそれがそうするものが含まれているかどうかを確認することができます。

他のヒント

DateTimeからの静的メソッド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()のドキュメントにあります。

炭素については何も知りませんが、これは機能します。CreateFromFormatメソッドのH(編集:Gは同じ正確なもの)の代わりに2桁(h)を使用していました:

$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