PHPで日時を扱う
date関数
- date(日時の書式)
<?php echo date( '今日は、Y年m月j日です。');
printf関数
- printf('フォーマットの文字列', %変換指定子1の値, %変換指定子2の値, …)
- 書き出す文字列の形式を先に指定して、後で実際の値を指定します
printf関数で今日の日付を表示
- 変換指定子
- 文字列なら「%s」、変数なら「%d」
<?php $form = '%s%d年%d月%d日です。'; printf ( $form, '今日は、', date('Y'), date('m'), date('j'));
日付/時間関数
- 日付/時間を扱う標準関数
日付/時間関数の種類
- time()
- mktime()
- strtotime()
<?php // 日付や時間に関する関数 // Unixタイムスタンプ(1970/1/1 00:00:00からの経過秒数) var_dump(time()); var_dump(mktime(7,55,0,6,7,2012)); // 2012/6/7 7:55:00 var_dump(strtotime("2012/6/7 7:55:00")); var_dump(strtotime("last Sunday")); var_dump(strtotime("+2 day"));
date関数
- date関数は、指定した日付のフォーマットで文字列を変換する関数です
日付フォーマットに変換された文字列 = date( 日付フォーマット, 【タイムスタンプ】);
<?php // 日付や時間に関する関数 // Unixタイムスタンプ(1970/1/1 00:00:00からの経過秒数) var_dump(time()); var_dump(mktime(7,55,0,6,7,2012)); // 2012/6/7 7:55:00 var_dump(strtotime("2012/6/7 7:55:00")); var_dump(strtotime("last Sunday")); var_dump(strtotime("+2 day")); echo date("z", strtotime("last Sunday"));
フォーマット文字列
- 「2013/09/25」のような日付の表示を指定する
指定値 | 説明 | 戻り値の例 |
---|---|---|
Y | 年(4桁) | 2012 |
y | 年(2桁) | 12 |
m | 月(2桁) | 04 |
n | 月 | 4 |
d | 日(2桁) | 09 |
j | 日 | 9 |
g | 時(12時間単位) | 4 |
G | 時(24時間単位) | 16 |
h | 時(12時間単位で2桁) | 04 |
H | 時(24時間単位日2桁) | 16 |
i | 分(2桁) | 06 |
s | 秒(2桁) | 46 |
a | 午前または午後(小文字) | pm |
A | 午前または午後(大文字) | PM |
L | うるう年かどうか | 1:うるう年 0:うるう年以外 |
t | 月の日数 | 28から31 |
U | UNIXタイムスタンプ | 1335768642 |
w | 曜日(数値) | 0:日曜~6:土曜 |
W | 1年で何週目か | 11 |
z | 1年で何日目か | 11 |
<?php print date ( 'Y/m/d H:i:s' ); print '<br>'; print date ( 'Y/m/d H:i:s', time() ); print '<br>'; print date ( 'Y年m月d日 H時i分s秒' ); print '<br>'; print date ( 'y-n-j Ah時i分s秒' ); print '<br>'; $week = array ( '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日' ); print '今日は' . $week[date ( 'w' )] . 'です';
mktime関数
- mktime関数は、現在から一週間後、二ヵ月後 等の日付時刻を取得したい場合に使用する関数です
- この関数で取得した値をdate関数の引数【タイムスタンプ】として設定することにより、過去・未来の日付時刻が取得できます
タイムスタンプ = mktime ( 時間, 分, 秒, 月, 日, 年 );
<?php // 現在日付時刻を設定 $year = date ( 'Y' ); $month = date ( 'm' ); $day = date ( 'd' ); $hour = date ( 'G' ); $minute = date ( 'i' ); $second = date ( 's' ); // 一週間後を設定 $OneWeekLater = mktime ( 0, 0, 0, $month, $day + 7, $year ); print '一週間後は' . date ( 'Y/m/d', $OneWeekLater ) . 'です<br>'; // このように書いても同じ結果です print '一週間後は' . date ( 'Y/m/d', mktime ( 0, 0, 0, date ( 'm' ), date ( 'd' ) + 7, date ( 'Y' ) ) ) . 'です<br>'; // 今年の7月末日を設定 // (引数の「日」に0を設定すると、前月の末日が自動設定されます。) $JulyLast = mktime ( 0, 0, 0, 8, 0, $year ); print '今年の7月末日は' . date( 'y年m月d日', $JulyLast ) . 'です<br>'; // 5日後の1時間前を設定 $Before = mktime ( $hour - 1, $minute, $second, $month, $day + 5, $year ); print '5日後の1時間前は' . date ( 'y年m月d日 H時i分s秒', $Before ) . 'です<br>';