CakePHP3、CakePHP4のdatetime型カラムの日時の扱い。秒まで表示する方法
2022/07/16
CakePHP3、CakePHP4の datetime型カラムを秒まで正しく表示したい!そんなときの対処方法
CakePHP3、CakePHP4で datetime型のカラムは i18nFormatを使ってフォーマットを指定
CakePHP3、CakePHP4で datetimeのカラムの年月日、時分秒を表示させたい場合は「i18nFormat()」を使用し、下記の様に記述します。
1 |
echo $users->created->i18nFormat('yyyy年MM月dd日 HH:mm:ss'); |
※Usersテーブルの createdカラムの日時を表示する想定です。
※「yyyy」は小文字で指定します。大文字だと違う値を取得してしまいます。
CakePHP3 Cookbook 日付と時刻・フォーマットする
https://book.cakephp.org/3.0/ja/core-libraries/time.html#id3
CakePHP4 Cookbook 日付と時刻・フォーマットする
https://book.cakephp.org/4/ja/core-libraries/time.html#id3
フォーマットの指定方法については以下を参照
https://www.php.net/manual/ja/class.intldateformatter.php
http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details
※この記事は、CakePHP3向けの記事として書いたものですが、CakePHP4でも全く同様に動作することを確認しました。
CakePHP3、CakePHP4で datetime型のカラムの扱い方
Bakeで出力される datetime型の項目
CakePHP3、CakePHP4で Bakeを実行すると、datetime型の createdカラムのデフォルトで出力される表記は下記のようになります。
1 |
echo h($users->created); |
表示されるのは「1/1/19, 1:01 AM
」のようになります。
date + strtotimeでフォーマットを指定する方法
これを「**年**月**日 **:**:**」形式で表示したい場合は、CakePHP3、CakePHP4であっても datetime型のカラムですので、普通の PHPの関数で日時を表示することも可能です。
1 |
echo date("Y年m月d日 H:i:s", strtotime(h($users->created); |
表示されるのは「2019年01月01日 01:01:00
」のようになります。
ですが、よくよく見ると「秒」の表示が常に「00」なのです。
CakePHP3、CakePHP4では「i18nFormat()」でフォーマットを指定
これを正しく表示させる方法が、CakePHP3、CakePHP4には用意されています。
その方法が最初に紹介した下記の方法です。
1 |
echo $users->created->i18nFormat('yyyy年MM月dd日 HH:mm:ss'); |
表示されるのは「2019年01月01日 01:01:01
」のようになります。
ちなみに、CakePHP3、CakePHP4では datetime型のカラムのデータを下記のようなオブジェクトとして保持しています。
1 2 3 4 5 6 |
Cake\I18n\FrozenTime Object ( [time] => 2019-01-01T01:01:01+00:00 [timezone] => UTC [fixedNowTime] => ) |
そのため、それを取り出すときは「i18nFormat()」でフォーマットを指定して取り出す、という仕様のようです。
値がないときはエラーになるためチェックの分岐が必要
ちなみに、createdや modifiedなどは必ず入力があるかと思いますが、deleted(削除日時カラム)などの入力がない可能性があるカラムの場合は、下記の様に入力がない場合の対処が必要です。
値がない場合はエラーとなりますので。
1 |
echo $users->deleted ? $users->deleted->i18nFormat('yyyy年MM月dd日 HH:mm:ss') : ""; |
「i18nFormat()」の時だけに限らず、strtotime()関数でもエラーになります。
CakePHP3の関連記事
CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールするCakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
その他の「CakePHP3」に関する記事一覧
CakePHP4のFrozenDateで1ヵ月前、先月、今月1日、来月末の日付などを算出する方法
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4の数値項目は「like %10%」の部分一致検索(find select)はできない
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
CakePHP4で複数の引数(パラメータ)を付与してコマンドを実行する方法
その他の「CakePHP4」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
CakePHP3のForm Helperの使い方のまとめ
CakePHP3になりフォームヘルパーの使い方も大きく変わりましたので、使い方をまとめました。基本的な使い方からプラスアルファの便利な使い方まで紹介。
-
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHP4のエラーメッセージ、完了メッセージなどを表示するフラッシュ処理の解説。Controller、レイアウトファイル、テンプレートファイルでそれぞれ処理を指定する。
-
CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法
CakePHP3にComposerからインストールできないプラグインやライブラリなどを利用する方法、vendorにファイルを設置し、composer.jsonを更新し、それを呼び出す方法を詳細に解説。
-
CakePHP3のプラグイン「CakeDC/Users」を日本語化・翻訳ファイルもダウンロード可
CakePHP3のユーザ管理、ログイン認証プラグインである「CakeDC/Users」のメッセージを日本語にする手順の解説とともに、日本語の翻訳ファイルを提供。ファイルを設置すれば日本語になる!
-
CakePHP4 でコマンドプログラム(シェルプログラム)を作成する方法解説
CakePHP4でバッチ処理を行うためのコマンド・シェルの実装方法について解説。bakeでテンプレートファイルを作成し、「execute()」に処理を記述する方法を解説。
-
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3のシェルスクリプトを作成し、コマンドラインから実行する方法を解説。複数単語をつなげる場合の対応方法がCakePHP2より制限が厳しくなったのでCakePHP3の命名規則の確認が必要だ。
-
CakePHP 2.3でOn Duplicate Key構文を実装
CakePHPで On Duplicate Key構文を Queryを利用して実装する方法をサンプルソース付きで解説します。
-
CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法
CakePHP3でPHPExcelを利用してエクセルを編集、出力するサンプルソース+解説。PHPExcelのインストール方法の解説からファイル保存とダウンロードの方法なども解説。
-
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。
-
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。