[PHP-users 25223] Re: 1ヶ月前の日付の取得について
Yusuke ITO
ito_yusuke @ white.livedoor.com
2005年 3月 31日 (木) 12:22:55 JST
伊東です、
--ss332jp<ss332jp @ yahoo.co.jp> wrote:
>期間の計算に関する原則的な取扱いは、民法に規定されています。
>下記が参考になると思います。
>
>期間計算の一般原則:
>http://www5d.biglobe.ne.jp/~Jusl/TomoLaw/KikanKeisan.html
>
>結果、2005年3月30日の1ヶ月前の日付は、2005年2月28日になります。
ここに載ってるのは、たぶん起算日<満了日のケースですね。
逆(起算日>満了日)も同じ計算方法でよければ、素直に実装してこんな感じで納得して頂けるかと。
<?php
echo(date('Y-m-d,', lastmonth(3, 30, 2005)));
echo(date('Y-m-d,', nextmonth(1, 31, 2005)));
function lastmonth($m, $d, $y){
if(checkdate($m, $d, $y)){
if($m == 1){
$y --;
$m = 12;
}else{
$m --;
if(!checkdate($m, $d, $y)){
$d = date('t', mktime(0, 0, 0, $m, 1, $y));
}
}
return(mktime(0, 0, 0, $m, $d, $y));
}else{
return(false);
}
}
function nextmonth($m, $d, $y){
if(checkdate($m, $d, $y)){
if($m == 12){
$y ++;
$m = 1;
}else{
$m ++;
if(!checkdate($m, $d, $y)){
$d = date('t', mktime(0, 0, 0, $m, 1, $y));
}
}
return(mktime(0, 0, 0, $m, $d, $y));
}else{
return(false);
}
}
?>
長いな。
だれかコンパクトにしてくださいw
--
伊東 祐介
ito_yusuke @ white.livedoor.com
-----------------------------------------------
2GBまでメールや画像など貯め放題!さらに特典いっぱい♪
livedoor ギガメーラープラス 【新登場】
http://gigamailerplus.livedoor.com/
PHP-users メーリングリストの案内