日付に関する関数
入力月の月末の年月日を返す
function getumatu($ymd)
{
list($y, $m, $d) = explode("/", $ymd, 3);
$m++;
if ($m == 13) {
$m = 1;
$y++;
}
$_ymd = "$y/$m/$d";
$ymd = mk_day($_ymd);
$ymd-=1;
$ymd = date('Y/n/j',$ymd);
return $ymd;
}
日付をタイムスタンプに変換
function mk_day($day)
{
list($y, $_m, $_d) = explode("/", $day, 3);
$m = intval($_m);
$d = intval($_d);
$MKT = mktime(0, 0, 0, $m, $d, $y);
return $MKT;
}
日付から次の日を出す
function nextday($day)
{
$ymd = $ymd + 86400;
$ymd = date('Y/n/j',$ymd); //日付式に変換
return $ymd;
}
日付から前の日を出す
function prevday($day)
{
$ymd = $ymd - 86400;
$ymd = date('Y/n/j',$ymd);//日付式に変換
return $ymd;
}
日付の比較
function cmpday($day1, $day2)
{
$day1 = mk_day($day1); //タイムスタンプに変換後の日付
$day2 = mk_day($day2); //↑と同じ
if ($day1 == $day2) return 0;
elseif ($day1 < $day2) return 1;
else return -1;
}
期間1から期間2の日付を配列にする
function listdays($day1, $day2)
{
while (cmpday($day1, $day2) >= 0) {
$A[] = $day1;
$day1 = nextday($day1);
}
return $A;
}
月単位に関する関数
入力月の一ヶ月先を$y年$m月に戻す
function nextmonth($y, $m)
{
$m++;
if ($m == 13) {
$y++;
$m = 1;
}
return array($y, $m);
}
入力された月の1ヶ月前を$y年$m月に戻す
function prevmonth($y, $m)
{
$m--;
if ($m < 1) {
// $mが12月なら$y年を1引く
$m = 12;
$y--;
}
return array($y, $m);
}
曜日に関する関数
曜日のリストを作る
$listdays:日付のリスト(1~月末まで)
返り値 $Y:第○週の○に入る数字をキーにした1週間の日付の配列
function list_week($listdays)
{
$i = 1;
foreach($listdays as $date) {
$W = strftime('%u', $date);
if ($W != 7)$day[] = $date;
else {
$day[] = $date;
$Y[$i++] = $day;
$day = array();
}
}
if (count($day) != 0)$Y[] = $day;
return $Y;
}