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まで)
【サンプル】
<?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"); ?>
2024/11/23
2024/11/23 21:13:00 pm
24/11/23 21:13:00
2024 November Saturday
2024/11/23 21:13:00 pm
24/11/23 21:13:00
2024 November Saturday
【サンプル】カレンダー
<?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'>"; ?>
2024 年 11 月 | ||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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()関数
指定日した日数後の日付を求めることができます。
日のパラメータを「指定日+経過日数」とすると、経過日数後の日付を求めることができます。
【サンプル】
<?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 ; ?>
2024 年 11 月 23 日 の 30 日後 → 2024/12/23
mktime()関数で、「日」に「0」を指定すると、前月末の日付を取得することができます。「月」+1で、今月末を求めることができます。
【サンプル】
<?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."(今月末)" ; ?>
2024 年 11 月 1 日 の 前日 → 2024/10/31(前月末)
2024 年 12 月 1 日 の 前日 → 2024/11/30(今月末)