Ext JSやRapid Driveなど
システム開発の技術情報をご紹介。

お問い合わせ 資料請求 無料見積り

お電話でお気軽にお問い合わせくださいTel 03-6805-2904 営業時間 [平日]AM 9:30 - PM 6:30

日付と時刻

日付と時刻について

日付関数の応用

日付同士の時間差を計算

会員情報などを登録した日時や更新した日時の差を計算する時などには、mktime()関数を使用することで求めることができます。また、このmktime()関数は各日時をUNIX時間 (1970年1月1日0時からの経過秒数)に変換し、時差を求めます。

時差を計算
<?php
    $regist1 = "05/12/2006";
    $regist2 = "10/05/2007";

    list($month1,$day1,$year1) = explode("/",$regist1);
    list($month2,$day2,$year2) = explode("/",$regist2);

    $regist1 = mktime(0,0,0,$month1,$day1,$year1);
    $regist2 = mktime(0,0,0,$month2,$day2,$year2);

    $time_difference = $regist2-$regist1;

    echo ("時差は");
    echo date("Y",$time_difference) - 1970;
    echo ("年と");
    echo date("m",$time_difference) - 1;
    echo ("ヶ月");
    echo date("d",$time_difference) - 1;
    echo ("日です");
?>
実行結果
時差は1年と4ヶ月26日です

上記のスクリプトでは、変数$regist1と$regist2をexplode()関数で分割して、mktime()関数でUNIX時間にへの変換を行っています。その変換を行って、時差を計算し、date()関数で文字をフォーマットしています。ここでlist()関数は配列と同様の形式で、複数の変数への代入($month1,$day1,$year1など)を行っています。

日付の正当性をチェック

入力フォームから入力された日付が正しい値であるかなど、checkdate()関数を使ってチェックをすることができます。

checkdate()関数のチェック基準
  • 年が1から32767の間。
  • 月が1から12の間。
  • dayが指定された月 (month)の日数以内。うるう年 (year)も対象となる。
<?php
    $check_date = "2008/15/01";

    list($year,$month,$day) = explode("/",$check_date);

    if(checkdate($year,$month,$day)) {
        echo "この日付は正しいです。";
    } else {
        echo "この日付は正しくありません。";
    }
?>
実行結果
この日付は正しくありません

上記のスクリプトは年月日をexplode()関数で分割して、checkdate()関数で日付の正当性をチェックしています。実行結果は、「月が1から12の間。」の基準から見て、おかしいので、「この日付は正しくありません。」となります(15月などという月は存在しないので)。

セレクトメニューを生成

ここではスクリプトでセレクトメニューを作成してみます。

通常htmlでセレクトメニューを記述した場合は下記のようになります。

<select name="year">
    <option value="01">1</option>
    <option value="02">2</option>
    <option value="03">3</option>
    <option value="04">4</option>
    <option value="05">5</option>
    <option value="06">6</option>
    <option value="07">7</option>
    <option value="08">8</option>
    <option value="09">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
</select>年

月の場合は上記の12個分のoptionタグで済みますが、日の場合などは最多で31個も記述しなくてはなりません。phpで記述した場合は以下の用になります。

<select witdh="50" name="year">
<?php
    $day =1;
    for ($i=0; $i<31; $i++) {
        $day_two_digits = sprintf("%02d",$day);
        echo("<option value='$year_two_digits'>$day</option>n");
        $day++;
    }
?>
</select>日
実行結果
スクリプトでのselectメニュー