見出し画像

[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(2055329221999); // 1999年9月22日20時55分32秒のタイムスタンプ 
echo date('Y-n-j H:i:s', $timestamp); // 年-月-日 時:分:秒 の書式で出力

/* 実行結果 */
1999-9-22 20:55:32

mktime()で取得したタイムスタンプをdate()の引数に渡すことで現在以外の時刻を表示できます。
ここでもタイムゾーン設定を忘れずに。

よく使う日付関数を紹介してきました。
まだまだ勉強不足が否めませんが頑張ります。

そのうち、日付の計算方法や比較なども紹介できればと思います。

いいなと思ったら応援しよう!