私のデータベースには2つの日付がmysql DateTime形式YYYY-MM-DD HH:MM:SS
で保存されています。このデータを(他の文字列などで)取得したら、別の形式(おそらくDD.MM.YYYY HH:MM:SS
)に変換して、ビューのテーブルセルに表示します。データベースの日付はdate_begin
およびdate_end
と呼ばれます。
データベースからこの日付を取得したら、それをDD.MM.YYYY
形式に変換し、日付と時刻を分離し、時刻をカスタム文字列( "HH1:MM1-HH2:MM2")に保存して、両方を見る。
どうすればこれを達成できますか?コントローラーではなくビューで変換する例をいくつか見つけましたが、これはMVCには適していないと思います。
"ビューの日付のフォーマットはMVCに適していない"という印象を得た場所がわからない。これは問題ではないためなんでも。
Eloquent Models を使用している場合は、非常に簡単に実行できます。
1。モデルクラスの$dates
プロパティに列を追加します。
protected $dates = ['date_begin', 'date_end'];
これにより、値が mutated から Carbon instances になることが保証されます。
2。ビューファイルでは、Carbonが提供するformat
メソッドを次のように使用できます。
<!-- To use only the date with the given format -->
{{ $item->date_begin->format('Y.m.d') }}
<!-- To use only the time with the given format -->
{{ $item->date_begin->format('H:i:s') }}
<!-- To use both date and time with the given format -->
{{ $item->date_begin->format('Y.m.d H:i:s') }}
値を時間と日付に分割する必要はありません。必要な format を使用して、DateTime値から必要なものを表示するだけです。
Eloquentモデルを使用していない場合は、Carbonを手動で使用して、次のように値をフォーマットできます。
{{ Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $item->date_begin)->format('Y.m.d') }}
私はPHP Carbonなしのソリューションを使用しました:
データベースの日付を取得して(デフォルトの形式:YYYY-MM-DD HH:MM:SS)、ビューに印刷するときに$item->date_begin
を次のように置き換えます。
date('d-m-Y H:i:s', strtotime($item->date_begin))
その後、それをデータベースに保存するときに、DB更新を追加します。
date('Y-m-d H:i:s', strtotime($request->date_begin))