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”);
?>
【サンプル】カレンダー
<?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 “
“;
echo “
$yyyy 年 $mm 月 |
“;
echo “
“;
echo “
日 |
“;
echo “
月 |
“;
echo “
火 |
“;
echo “
水 |
“;
echo “
木 |
“;
echo “
金 |
“;
echo “
土 |
“;
echo “
“;
// 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 “
“;
for ($j = 0; $j <= 6; $j++) {
$d = $i * 7 + $j - $wd1 + 1;
if ($d > $lastd or $d < 1) {
echo "
|
“;
}
//今日の日付の場合はセルに色をつける
else {
if ($d == $dd ) {
echo “
$d |
“;
}
else {
echo “
$d |
“;
}
}
}
echo “
“;
}
echo “
“;
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.”(今月末)” ;
?>