スポンサーリンク

CakePHPで,DBの日時タイムスタンプを,曜日と秒まで表示させる

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 のように記述できます