PHPのdate()関数は、指定されたフォーマットに従って、現在の日付や時刻を文字列で返す関数です
フォーマット文字列を指定することで、年、月、日、曜日、時刻など、様々な要素を任意の形式で表示することができます
date関数は引数に日付フォーマットを指定します echo date('Y-m-d H:i:s'); 現在の年-月-日 時:分:秒が出力されます
date関数のサンプルプログラムで確認してみましょう
<?php
// 曜日を定義
$week = [
'日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'
];
// 現在の日付と時刻を取得する
$current_datetime = date('Y年m月d日 H:i:s');
// 現在の年を取得する
$current_year = date('Y');
// 現在の月を取得する
$current_month = date('m');
// 現在の日を取得する
$current_day = date('d');
// 曜日を取得する
$weekday = date('l');
// 日本表記の曜日
$jpweekday = $week[date('w')];
// 指定した月の日数
$last_day = date('t');
// フォーマットに従って日付を取得する
$custom_date = date('Y年m月d日', strtotime('2022-04-01'));
// 結果を出力する
echo '現在の日付と時刻:' . $current_datetime . PHP_EOL;
echo '曜日:' . $weekday . PHP_EOL;
echo '現在の年:' . $current_year . PHP_EOL;
echo '現在の月:' . $current_month . PHP_EOL;
echo '現在の日:' . $current_day . PHP_EOL;
echo '月末の日:' . $last_day . PHP_EOL;
echo '指定した日付:' . $custom_date . PHP_EOL;
echo '日本表記曜日:' . $jpweekday . PHP_EOL;
?>
このプログラムでは、date()
関数を使用して現在の日付と時刻、曜日、現在の年、そして指定した日付を取得しています。各々の出力結果は、指定されたフォーマットに従って文字列化されます。
date関数で縦型のカレンダーサンプルプログラムで確認してみましょう
このプログラムでは、月初から月末までの縦型カレンダーを作成します。
date関数とstrtotime関数を併用して、日を1日ずつ進めます。
また、日付は1日から9日までは、先頭にゼロ埋めするための関数sprintf関数でゼロ埋めします
<?php
// 曜日を定義
$week = ['日', '月', '火', '水', '木', '金', '土'];
// 年を取得
$year = date('Y');
// 月を取得
$month = date('n');
// 月の日数を取得
$max = date('t');
?>
<table style="border:solid 1px;border-collapse:collapse;">
<caption><?= $year . '年' . $month . '月' ?></caption>
<?php for ($i = 1; $i <= $max; $i++): ?>
<tr>
<th style="border:solid 1px;width:100px;"><?= $i; ?></th>
<th style="border:solid 1px;width:100px;">
<?php
$day = sprintf('%02d', $i);
$w = date('w', strtotime($year . '-'. $month . '-' . $day));
echo $week[$w];
?>
</th>
</tr>
<?php endfor; ?>
</table>
PHP日付フォーマット一覧
赤色でマークしている箇所は良く利用するフォーマットになります。
後、先頭にゼロパディングも大切なフォーマットになるので、覚えておきましょう
使用頻度 | フォーマット | 例 | 補足 | |
年 | ● | Y | 1999 や 2020 | 4桁の数字で年を表します |
y | 99 や 19 | 2桁の数字で年を表します | ||
L | 1 か 0 | 閏年 1なら閏年。0なら閏年ではない | ||
月 | F | January~December | 月名をフルスペル | |
● | m | 01~12 | ゼロでパディングした2桁の数字で月 | |
M | Jan~Dec | 月 3 文字形式 | ||
● | n | 1~12 | 先頭にゼロをつけない1桁または2桁の数字 | |
日 | ● | t | 28~31 | 指定した月の日数 |
● | d | 01~31 | 先頭にゼロをつけた2桁の数字で日 | |
● | j | 1~31 | 先頭にゼロをつけない1桁または2桁の数字 | |
曜日 | D | Mon~Sun | 3文字のテキスト形式 | |
l | Sunday~Saturday | フルスペル形式 | ||
N | 1~7 | 数字 1(月曜) から 7(日曜) | ||
● | w | 0~6 | 数字 0(日曜) から 6(土曜) | |
W | 1 | 数字 月曜日に始まる年単位の週番号 | ||
時 | g | 1~12 | 先頭ゼロをつけない 12時間単位 | |
G | 0~23 | 先頭ゼロをつけない24時間単位 | ||
h | 01~12 | 先頭にゼロをつけた12時間単位 | ||
● | H | 00~23 | 先頭にゼロをつけた24時間単位 | |
a | am pm | 午前:午後。小文字表示 | ||
A | AM PM | 午前:午後。大文字表示 | ||
分 | ● | i | 00~59 | 先頭ゼロあり |
秒 | ● | s | 00~59 | 先頭ゼロあり |
上記のコードをコピペして下記のサイトで実際にPHPコードを実行してみましょう
本サイトでは、基礎的な学習は開発環境を構築しないで、webで実行します。
コピペで動作したら、今度は自分で実際にコードをトレースしてコーディングしてみましょう
効率的にプログラムを学習するなら必ず、手打ちすることです。
打つことで、アウトプットして覚えていきます。
ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要24言語に対応。プログラミング学習にも。