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");
?>
\n”);
$hiduke = date(“Y/m/d H:i:s a”);
echo (“$hiduke
\n”);
$hiduke = date(“y/n/j G:i:s”);
echo (“$hiduke
\n”);
$hiduke = date(“Y F l”);
echo (“$hiduke
\n”);
?>
$hiduke = date(“Y/m/d H:i:s a”);
echo (“$hiduke
\n”);
$hiduke = date(“y/n/j G:i:s”);
echo (“$hiduke
\n”);
$hiduke = date(“Y F l”);
echo (“$hiduke
\n”);
?>
【サンプル】カレンダー
<?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'>";
?>
“;echo “
| $yyyy 年 $mm 月 | ||||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| $d | $d | |||||
“;
echo “
“;
?>
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 ;
?>
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."(今月末)" ;
?>
$yyyy 年 $kongetu 月 1 日 の 前日 → ”.$date.”(今月末)” ;
?>
?>