![見出し画像](https://assets.st-note.com/production/uploads/images/87431416/rectangle_large_type_2_d65736606d5a024d71c1db823b6d5f35.png?width=1200)
[PHP]よく使う日付関数まとめ
最近、プログラミングに興味を持ちPHPの学習を始めたので備忘録としてまとめておきます。
date()
date('フォーマット');
date('フォーマット', タイムスタンプ);
date()で日付文字列を返す。
任意でタイムスタンプを設定できる。タイムスタンプが与えられない場合は現在の時刻が使われる。
(タイムスタンプとは1970年1月1日から現在までの経過秒数)
タイムゾーンを設定するにはdate_default_timezone_set()を使う。これを設定しないと標準時刻(ロンドンのタイムゾーン)が使用される。
/* タイムスタンプを指定しない場合 */
date_default_timezone_set('Asia/Tokyo'); // 日本のタイムゾーンを設定
echo date('n/j(D) H:i:s');
/* 実行結果 */
9/22(Thu) 20:30:51 // リアルタイムの日付と時刻
n/j(D)のようなフォーマットに関しては覚える必要はなく、以下のPHPリファレンスを参照すればよい。
strtotime()
/* タイムスタンプを指定する場合 */
date_default_timezone_set('Asia/Tokyo'); // 日本のタイムゾーンを設定
$timestamp = strtotime('+ 1day'); // 1日後のタイムスタンプを設定
$timestamp2 = strtotime('+ 1week'); // 1週間後のタイムスタンプを設定
echo date('n/j(D)', $timestamp);
echo date('n/j(D)', $timestamp2);
//実行結果
9/23(Fri) // 1日後
9/29(Thu) // 1週間後
strtotime()は引数に渡す文字列をタイムスタンプに変換できる。上記の例では、現在時刻から1日後と1週間後を指定している。
strtotime()の引数には、'last(next) Monday' 「先週(来週)の月曜日」や
'2012-09-24'、'first day of February'なども使用できる。
いずれも引数には文字列が渡される。
ただし、last Monday などの相対日時にはタイムゾーンに基づくの現在のタイムスタンプから見たlast Mondayが返されることに注意。
mktime()
mktime(
時, 分, 秒, 月, 日, 年 // いずれも整数値で引数を渡す
);
mktime()は与えられた引数に従ってタイムスタンプを返す。
直感的に日付時刻を設定できる。
与える引数の順番がややこしいので注意。
(必ず「時, 分, 秒, 月, 日, 年」の順番で指定してください。期待通りのタイムスタンプを取得できません。)
date_default_timezone_set('Asia/Tokyo'); // 日本のタイムゾーンを設定
$timestamp = mktime(20, 55, 32, 9, 22, 1999); // 1999年9月22日20時55分32秒のタイムスタンプ
echo date('Y-n-j H:i:s', $timestamp); // 年-月-日 時:分:秒 の書式で出力
/* 実行結果 */
1999-9-22 20:55:32
mktime()で取得したタイムスタンプをdate()の引数に渡すことで現在以外の時刻を表示できます。
ここでもタイムゾーン設定を忘れずに。
よく使う日付関数を紹介してきました。
まだまだ勉強不足が否めませんが頑張ります。
そのうち、日付の計算方法や比較なども紹介できればと思います。