現在リニューアル中 → 旧サイトはこちら

秒数から日時分秒を取得

秒数から「日時分秒」を計算して、連想配列にして返す。

function get_time($sec) { define("DAY", 86400); define("HOUR", 3600); define("MIN", 60); $time['day'] = floor($sec/DAY); $sec %= DAY; $time['hour'] = floor($sec/HOUR); $sec %= HOUR; $time['min'] = floor($sec/MIN); $time['sec'] = $sec % MIN; return $time; }

日数差の計算

タイムスタンプで秒差を求めた後、上記get_time(秒数から日時分秒を取得)を呼んで、「日時分秒」の形式に変換します。

//$time1, $time2にはタイムスタンプ値がセットされている //差分(秒差)を求める $diff = abs($time1 - $time2); //日時分秒に変換 $date = get_time($diff); echo $time['day']."日 ".$time['hour']."時間 ".$time['min']."分 ".$time['sec']."秒 ";

strtotimeの用法

一般的な書式

//日付をタイムスタンプに変換 strtotime("2004/8/31"); //昨日の日付を取得 echo date("Y/m/d", strtotime("-1 day")); //今日の日付を取得 echo date("Y/m/d", strtotime("now")); //明日の日付を取得 echo date("Y/m/d", strtotime("+1 day")); //3週間後の日付を取得 echo date("Y/m/d", strtotime("+3 week")); //1ヶ月と15日後の日付を取得 echo date("Y/m/d", strtotime("+1 month 15 day")); //3日と5時間後 strtotime("+3 days 5 hours"); //次の月曜日 strtotime("next Monday"); //先週の金曜日 strtotime("last Friday"); //来年3か月後の日付を取得 echo date("Y/m/d",strtotime("next year +3 months")); //前後2日の日付を取得 for ($i=-2; $i<=2; $i++) { echo "<p>".date("Y/m/d", strtotime("+$i day")); }

strtotimeが使えない日付文字列

split関数+list関数+mktime関数を組み合わせて変換します。

$strdate = "2004 5 30 10 30 50"; //splitのセパレータは"-", ":", "/", " " list($y, $m, $d, $h, $i, $s) = split("[-:/ ]", $strdate); $time = mktime($h, $i, $s, $m, $d, $y);

mktimeの用法

指定日数後の日付

「日」のパラメータを「指定日+経過日数」とする。

//年月日 $yyyy = 2004; $mm = 4; $dd = 1; //間隔日数 $int_day = 100; //タイムスタンプを取得 $ts = mktime(0, 0, 0, $mm, $dd + $int_day, $yyyy); echo date("Y/m/d", $ts);

本日から30日前の日付を求める。

$timestamp = mktime(0, 0, 0, date("m"), date("d")-30, date("Y")); echo date("Y年n月j日", $timestamp);

月末の日付

「日」のパラメータに「0」を指定する。

//年月日 $yyyy = 2004; $mm = 7; //前月末の日付を求める(当月1日の前日) $ts = mktime(0, 0, 0, $mm, 0, $yyyy); echo date("Y/m/d", $ts)."<br>"; //今月末の日付を求める $ts = mktime(0, 0, 0, $mm + 1, 0, $yyyy); echo date("Y/m/d", $ts);

◎0月とは前の月、0日とは前の日。
・mktime(0, 0, 0, 1, 0, 2005)...2005/1/0 → 2004/12/31
・mktime(0, 0, 0, 0, 1, 2005)...2005/0/1 → 2004/12/1

checkdateの用法

うるう年チェック

function isLiadpYear($yyyy) { return Checkdate(2, 29, $yyyy); }

有効な日付を取得

checkdate関数の戻り値がFALSEになるまで処理を続けるという使い方で、指定年月1日から末日までの日付を取得することができる。

$yyyy = 2005; $mm = 4; $dd = 1; while (checkdate($mm, $dd, $yyyy)) { echo $dd; $dd += 1; }

処理時間の計算

list($usec1, $sec1) explode(" ", microtime()); // 時間のかかる処理 list($usec2, $sec2) explode(" ", microtime()); $time = $usec2+$sec2-$usec1-$sec1;