PHPで文字列からUnixタイムスタンプに変換することができるstrtotime関数について説明します。
date関数と組み合わせることで、日付フォーマットを柔軟に変更することができます。
strtotime関数の使い方
1 |
strtotime ( 時間 ) |
strtotime関数では、「2016-05-18」といった日付形式以外にも、英文形式の日付「10 September 2000」でも日付を指定できます。
また、具体的な日付を指定するほかに「now」や「tomorrow」といった相対的な日付も指定することができます。以下に一例を挙げます。
現在
1 |
strtotime("now"); |
明日(1日後)
1 |
strtotime("+1 day"); |
1週間後
1 |
strtotime("+1 week"); |
次の曜日
1 |
strtotime("next Thursday"); |
前の曜日
1 |
strtotime("last Monday"); |
複合
1 |
strtotime("+1 week 2 days 4 hours 2 seconds"); |
strtotime関数の結果は、UNIXタイムスタンプ形式のint型で戻されます。システムがこのint型を基準に2日後、1週間前などの日付、時間を取得したい場合に計算しやすいため、このような形式でデータを持っています。
date関数を使って変換
結果を分かりやすい形式に変換するためにはdate関数を使用してint型から指定されたフォーマットに変換します。
1 2 3 4 5 |
$now = strtotime("now"); // now は現在時刻を意味する $tomorrow = strtotime("tomorrow");//+1 day つまり明日を意味する echo '現在時刻:'.date( 'Y年m月d日 H時i分s秒', $now )."<br />\n"; echo '明日の日付:'.date( 'Y年m月d日', $tomorrow ); |
strtotimeで使える相対的な日付書式
0-9までの算用数字が使え、正(+)と負(-)を指定できます。単位や日付は以下のシンボルが使えます。
シンボル | 書式 |
---|---|
日付・時刻 | yesterday,midnight,today,now,noon,tomorrow |
曜日 | sunday, monday, tuesday, wednesday, thursday, friday, saturday, sun, mon, tue, wed, thu, fri , sat |
順序 | first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, next, last, previous, this |
前後など | next, last, previous, this |
単位 | sec, second, min, minute, hour, day, fortnight, week, month, year, weekday |