PHPには、日付と時刻操作する関数があらかじめ用意されています。
getdate()関数
今日の日付(時間)を求めます
【構文】
getdate (timestamp)
getdate()関数は、次の文字列を要素とする連想配列を返します。
second | 現在の秒 |
minutes | 現在の分 |
hours | 現在の時間 |
mday | 現在の日 |
wday | 現在の曜日番号 |
mon | 現在の月 |
year | 現在の年 |
yday | その年の通算日 |
weekday | テキスト形式の曜日 |
month | テキスト形式の月 |
date()関数
引数で与えた日付を指定するフォーマットの文字列に変換します。
a...am または pm A... AM または PM d... 2桁の日付(01~31) D... 3文字の曜日 (Sun ~ Sat) F... フルスペルの英字の月(January~December) h... 12時間単位 (00 ~ 12) の時間 H... 24時間単位 (00 ~ 23) の時間 g... 先頭に 0 をつけない12時間単位 (0 ~ 12) G... 先頭に 0 をつけない24時間単位 (0 ~ 23) I... 2桁の分 (00 ~ 59) j... 先頭に 0 をつけない (0 ~ 31)の日 l... フルスペルの英字で曜日(Sunday~Saturday) L... 閏年では 1 を、それ以外は 0 を返す n... 先頭に 0 をつけない (0 ~ 12) の月 m... 2桁のの月 (01 ~ 12) M... 3文字の月 (Jan ~ Dec) s... 2桁の秒 (00 ~ 59) S... 英文の序数を表わす接尾語 (th ~ nd) t... 指定した月の日数 (28 ~ 31) U... UNIX時間 (1970年1月1日からの秒数) w... 数値で示す曜日 (0 ~ 6) y... 西暦の下2桁を示す年 Y... 西暦を4桁で示す年 z... その年の1月1日からの通算日 Z...タイムゾーンのオフセット秒 ( -43200 ~ 43200まで)
【サンプル】
1 2 3 4 5 6 7 8 9 10 | <?php $hiduke = date ( "Y/m/d" ); echo ( "$hiduke<br>\n" ); $hiduke = date ( "Y/m/d H:i:s a" ); echo ( "$hiduke<br>\n" ); $hiduke = date ( "y/n/j G:i:s" ); echo ( "$hiduke<br>\n" ); $hiduke = date ( "Y F l" ); echo ( "$hiduke<br>\n" ); ?> |
2025/04/04
2025/04/04 08:56:36 am
25/4/4 8:56:36
2025 April Friday
2025/04/04 08:56:36 am
25/4/4 8:56:36
2025 April Friday
【サンプル】カレンダー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <?php //今日の日付を取得 $today = getdate (); $yyyy = $today [year]; //年 $mm = $today [mon]; //月 $dd = $today [mday]; //日 // カレンダーを表示する echo "<p><img src='line_heart.gif'>" ; echo "<table>" ; echo "<tr align='center'><td colspan='7'>$yyyy 年 $mm 月</td></tr>" ; echo "<tr>" ; echo "<td width='20'>日</td>" ; echo "<td width='20'>月</td>" ; echo "<td width='20'>火</td>" ; echo "<td width='20'>水</td>" ; echo "<td width='20'>木</td>" ; echo "<td width='20'>金</td>" ; echo "<td width='20'>土</td>" ; echo "</tr>" ; // 1日の曜日を取得する $wd1 = date ( "w" , mktime (0, 0, 0, $mm , 1, $yyyy )); $d = 0; $lastd = date ( "d" , mktime (0, 0, 0, $mm + 1, 0, $yyyy )); for ( $i = 0; $i <= 5; $i ++) { if ( $d > $lastd ) { break ;} echo "<tr>" ; for ( $j = 0; $j <= 6; $j ++) { $d = $i * 7 + $j - $wd1 + 1; if ( $d > $lastd or $d < 1) { echo "<td> </td>" ; } //今日の日付の場合はセルに色をつける else { if ( $d == $dd ) { echo "<td align='center' bgcolor='#efb457'>$d</td>" ; } else { echo "<td align='center'>$d</td>" ; } } } echo "</tr>" ; } echo "</table>" ; echo "<p><img src='line_heart.gif'>" ; ?> |
2025 年 4 月 | ||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
mktime()関数
指定日した日数後の日付を求めることができます。
日のパラメータを「指定日+経過日数」とすると、経過日数後の日付を求めることができます。
【サンプル】
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php //本日の日付 $today = getdate (); $yyyy = $today [year]; $mm = $today [mon]; $dd = $today [mday]; //間隔日数 $kankaku = 30; //タイムスタンプを取得 $date = date ( "Y/m/d" , mktime (0,0,0, $mm , $dd + $kankaku , $yyyy )); echo "$yyyy 年 $mm 月 $dd 日 の $kankaku 日後 → " . $date ; ?> |
2025 年 4 月 4 日 の 30 日後 → 2025/05/04
mktime()関数で、「日」に「0」を指定すると、前月末の日付を取得することができます。「月」+1で、今月末を求めることができます。
【サンプル】
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php //今日の日付を求める $today = getdate (); $yyyy = $today [year]; $mm = $today [mon]; $kongetu = $mm + 1; $date = date ( "Y/m/d" , mktime (0,0,0, $mm ,0, $yyyy )); echo "$yyyy 年 $mm 月 1 日 の 前日 → " . $date . "(前月末)" ; $date = date ( "Y/m/d" , mktime (0,0,0, $mm + 1,0, $yyyy )); echo "<p>$yyyy 年 $kongetu 月 1 日 の 前日 → " . $date . "(今月末)" ; ?> |
2025 年 4 月 1 日 の 前日 → 2025/03/31(前月末)
2025 年 5 月 1 日 の 前日 → 2025/04/30(今月末)