date()関数のようにタイムゾーンによって値が変わってくるものについては、 PHP5.1.0以降タイムゾーンが未設定だと警告を出すので、すべてのスクリプトにおいて真っ先に以下のようにdate_default_timezone_set()関数を記述しておく方が手堅い。
存在する日付(年月日)かどうかをチェックします。 if (checkdate($month, $day, $year)) { echo 'この日付は存在します。'; }
存在する日付(年月日)かどうかをチェックします。
「UNIX秒」は、「タイムスタンプ」や「エポック秒」、「積算秒」などと言われる1970年1月1日0時からの秒数です。 $timestamp = time(); // 1252145902のような数値が返る microtime()から取得する方法 list($msec, $timestamp) = explode(" ", microtime()); microtime()の返り値は「0.22840000 1252145902」のような文字列なのでexplode()関数で切り分けている。
「UNIX秒」は、「タイムスタンプ」や「エポック秒」、「積算秒」などと言われる1970年1月1日0時からの秒数です。
microtime()から取得する方法
microtime()の返り値は「0.22840000 1252145902」のような文字列なのでexplode()関数で切り分けている。
$date = date('Y/m/d H:i:s'); // date('Y/m/d H:i:s', time())と書いても同じ // 丸一日前なら $date = date('Y/m/d H:i:s', time()-60*60*24); 別の方法で取得 $tm = localtime(); // localtime(time())と書いても同じ $date = sprintf("%d/%02d/%02d %02d:%02d:%02d", $tm[5]+1900,$tm[4]+1,$tm[3],$tm[2],$tm[1],$tm[0]); // 丸一日前なら $tm = localtime(time()-60*60*24);
別の方法で取得
指定日時をUNIX秒に変換 $timestamp = mktime($hour, $min, $sec, $month, $mday, $year); 引数省略は右から順に可能で、省略すれば現在日時が適用される。 英文形式の日付をUNIX秒に変換する $timestamp = strtotime("10 September 2000");
指定日時をUNIX秒に変換
引数省略は右から順に可能で、省略すれば現在日時が適用される。
英文形式の日付をUNIX秒に変換する
▼ 2009年2月1日の曜日を取得する例 ・mktime()でUNIX秒にしてdate()を使う $week = date("w", mktime(0, 0, 0, 2, 1, 2009)); ・ツェラーの公式を使った例 $week = wday(2009, 2, 1); function wday($year, $month, $mday) { if ($month == 1 || $month == 2) { $year--; $month += 12; } return intval($year + intval($year/4) - intval($year/100) + intval($year/400) + intval((13 * $month + 8)/5) + $mday) % 7; }
▼ 2009年2月1日の曜日を取得する例
▼ 2009年2月の日数を取得する例 ・mktime()でUNIX秒にしてdate()を使う $days = date("t", mktime(0, 0, 0, 2, 1, 2009)); ・うるう年判別法を使う $days = lastday(2009, 2); function lastday($year, $month) { $lastday= array(31,28,31,30,31,30,31,31,30,31,30,31); return $lastday[$month-1] + ($month == 2 && $year % 4 == 0 && ($year % 400 == 0 || $year % 100 != 0)); }
▼ 2009年2月の日数を取得する例