【PHP学習】日付の月や日を2桁にする方法

20220219_php_icon_130857.png PHP

PHP学習している時に必要になった「月日を2桁にする方法」を備忘録として書いておきます。

単純な話しなのですぐに終わります。

実現したかったこと

フォームに入力した年月日データをSQLで検索かけてダウンロードしたかったため、フォームを作成したのですが、for文で作ると月日が1桁になってしまうため、SQLが保持しているデータと合わないため2桁にする必要がありました。
※SQLで保持しているデータは「MMDD」形式なので

そのため、何とかして1桁を2桁にしたかったことがきっかけです。

以下のコードを書いていました。

function pulldown_month()
{
    for($i = 1; $i <= 12; $i++) {
        echo '<option value="'.$i.'">'.$i.'月</option>';
    }
}

function pulldown_day()
{
    for($i = 1; $i <= 31; $i++) {
        echo '<option value="'.$i.'">'.$i.'日</option>';
    }
}

これだと結果が「1月、2月、3月・・・12月」と「1日、2日、3日・・・31日」となってしまいます。

そしてフォームで入力されるデータは「01」や「02」というフォーマットなので入力したデータを2桁にしてあげる必要があります。

ググってみたところ「sprintf」関数で実現できるとのことでした。

1桁を2桁にする方法

それでは実際に「sprintf」を使って、1桁を2桁にしてみます。

  • コード
$month = sprintf('%02d', $month);
$day = sprintf('%02d', $day);
  • コードの説明
コード 説明
$month フォームで入力した月が入ってます。例:1、2・・
$day フォームで入力した日が入ってます。例:1、2・・
sprintf 第1引数の’%02d’で2桁にしています。
第2引数は2桁にする対象になります。

こうすることで「1,2」が「01,02」という風に2桁になります。
「%02d」を「%03d」にすると3桁(001,002)という風になります。

参考URL

参考にしたサイトのURLです。

公式:sprintf

PHPで0埋めをする2つの方法- sprintf関数とstr_pad関数

たまにこういうのって必要になるんですよねぇ。

以上です。ありがとうございました。

コメント

タイトルとURLをコピーしました