Cakeで日時カラムから値を持ってくると,秒まで表示させるのが意外と面倒。
DB内には秒まで格納されているのに,簡単に画面上に表示させる方法がない。
下記はヘルパーメソッドの例:
// UTCのdatetimeを受け取り,日本時間で秒まで返す。 function getJstStringFromDatetime( $datetime_utc ){ // UTC to JST $datetime_jst = (new \DateTime( $datetime_utc ))->setTimeZone( new \DateTimeZone('Asia/Tokyo')); // 曜日名 $day_names = array( "日", "月", "火", "水", "木", "金", "土" ); $day_kanji = $day_names[ $datetime_jst->format("w") ]; // 秒 $datetime_sec = date( 's', $datetime_utc->format("U") ); // format: http://raining.bear-life.com/php/php%E3%81%AEdate%E9%96%A2%E6%95%B0%E3%81%A7%E6%97%A5%E4%BB%98%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E5%A4%89%E6%9B%B4 return h( $datetime_jst->format("Y/n/j(${day_kanji}) H:i") . ":" . $datetime_sec ); }
これで 2018/10/1(月) 12:34:56 のように表示される。
0埋めはしていない。
Datetimeクラスは頭にバックスラッシュが必要。
FuelPHPにおけるDateTimeクラスの呼び出し - てきとう
http://tmge.hatenablog.com/entry/2013/08/09/210046
- エスケープではなく名前空間のグローバル空間です。
- それから、Fuel の Core クラスはグローバル空間にエイリアスされるのでほとんどの場合、\Foo のように記述できます