DatetimeをPHPに変換します
-
02-01-2020 - |
質問
そのような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'));
.