[FuelPHP] Dateクラスの使い方について
Date クラスを使うときに毎回調べたり、過去のソースをサルベージするのも面倒なので簡単にまとめてみる。
基本的な使い方
Dateクラスにもメソッドが色々とあるけれど、個人的によく使うものだけメモしておく。(個人的にタイムゾーンあたりは使わないので触れない)Date::forge
Date::forge(1417484097)
タイムスタンプを渡してやると以下のような Fuel\Core\Date オブジェクト を返す。
Variable #1: (Object #35): Fuel\Core\Date ↵ protected server_gmt_offset (Integer): 32400 public display_timezone (String): "Asia/Tokyo" (10 characters) protected timestamp (Integer): 1417484097 protected timezone (String): "Asia/Tokyo" (10 characters)
Date::time
Date::time()
現在のタイムスタンプでDate::forge()
している。Date::forge( time() )
と同じ。
同様に Fuel\Core\Date オブジェクト が返ってくる。
Date::format
Fuel\Core\Dateオブジェクト (Date::forge(1417484097)
やDate::time()
) を指定されたフォーマットで返す(String)。 Date::time()->format('mysql_date') // -> "2014-12-02"
ちなみに指定できるパターンキーは以下の通り。fuel/core/config/date.php で定義されている。新たに定義を増やす場合は app/config で上書きして使えば良い。
'patterns' => array(
'local' => '%c',
'mysql' => '%Y-%m-%d %H:%M:%S',
'mysql_date' => '%Y-%m-%d',
'us' => '%m/%d/%Y',
'us_short' => '%m/%d',
'us_named' => '%B %d %Y',
'us_full' => '%I:%M %p, %B %d %Y',
'eu' => '%d/%m/%Y',
'eu_short' => '%d/%m',
'eu_named' => '%d %B %Y',
'eu_full' => '%H:%M, %d %B %Y',
'24h' => '%H:%M',
'12h' => '%I:%M %p'
)
パターンキーを使わないでもお馴染みのフォーマットで指定できる。
Date::time()->format('%Y-%m-%d')
// -> "2014-12-02"
Date::create_from_string
指定の日付文字列から Fuel\Core\Dateオブジェクトを作成する。Date::create_from_string("2014-12-25" , "mysql_date")
Date::days_in_month
指定の月に日数が何日あるか返す。うるう年の2月ぐらいしか使いどころがないようにも思えるが、逆にうるう年の2月にはかなり使えると思う。Date::days_in_month(1, 2014) // 31
Date::days_in_month(2, 2014) // 28
Date::days_in_month(3, 2014) // 31
Date::days_in_month(4, 2014) // 30
Date::days_in_month(5, 2014) // 31
Date::days_in_month(6, 2014) // 30
Date::days_in_month(7, 2014) // 31
Date::days_in_month(8, 2014) // 31
Date::days_in_month(9, 2014) // 30
Date::days_in_month(10, 2014) // 31
Date::days_in_month(11, 2014) // 30
Date::days_in_month(12, 2014) // 31
Date::time_ago
Twitterのツイートとかブログの記事とかの日付で重宝しそう。Date::time_ago(strtotime("12 April 1964"), strtotime("01 March 2012"), 'year'); // 48 years ago
引数 | 説明 |
---|---|
1 | タイムスタンプを指定。(必須) |
2 | 比較対象のタイムスタンプ。指定がない場合は現在時刻が適用。 |
3 | 結果の時間単位。’second’, ‘minute’, ‘hour’, ‘day’, ‘week’, ‘month’, ‘year’, ‘decade’ (10年) が指定可能。指定がない場合は、大きい単位で結果が返される。 |
ちなみに Date オブジェクトでも大丈夫みたい
Date::time_ago( Date::forge(1294176140) ) // 4 years ago
get_timestamp()
Dateオブジェクトからタイムスタンプ(int)を取得する。Date::forge(1294176140)->get_timestamp(); // 1294176140