date関数

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言語に対応。プログラミング学習にも。
タイトルとURLをコピーしました