-2

PHPで今日の日付から3か月後を取得するにはどうすればよいですか?

PHPから今日の日付を取得しdate("Y-m-d");ます2012-02-22

3か月後にデートをする方法....すなわち2012-05-22

編集:-

問題は、異なる月の異なる日数についてです.2月には28日もあり、うるう月には29日があります...奇数月は31日、その他は30日です... PHPには、これに対処するために使用できる事前構築済みの関数がありますか問題... ??

編集2

すべての回答で、それが問題になることを理解しました:-

https://stackoverflow.com/a/10275921/1182021を参照[+1]

だから私はそれのための手動関数を書く方が良いと思います...そして私は答えとしてここに入れます...みんなの助けとサポートに感謝します..

この質問への回答

正確な計算を行うには、すべての条件を手動で確認する必要があります... PHP には、このための組み込み関数はありません.... https://stackoverflow.com/a/10280441/1182021

4

4 に答える 4

4

これに使用できますstrtotime

$time = strtotime('+3 months');

ただし、口語的な意味での「月」は明確に定義された時間の単位ではないため、問題には実際には答えがないことに注意してください。たとえば、3 月 31 日プラス 3 か月は何ですか? 6月31日という日付はありません。

上記の例では、「余分な」日は翌月に繰り越されるため、3 月 31 日は 7 月 1 日になります。この動作は恣意的であり、それを「正しい」と考える天気はあなた次第です。独自の実装を作成する場合は、これらのケースを自分で処理する方法を決定する必要があります。

于 2012-04-23T06:42:28.990 に答える
1
$date = new DateTime();
$date->add(new DateInterval('P3M'));
于 2012-04-23T06:41:21.907 に答える
0

これは、タスクを達成するための 100% 動作するコードです

<?php
$month = date('n');
$year = date('Y');
$IsLeapYear = date('L');
$NextYear = $year + 1;
$IsNextYearLeap = date('L', mktime(0, 0, 0, 1, 1, $NextYear));
$TodaysDate = date('j');
if (strlen($month+3) < 10)
{
    $UpdateMonth = "0".($month+3);
}
if ($month > 9) {
    if ($month == 10)
    {
        $UpdateMonth = "01";
    }
    else if ($month == 11)
    {
        $UpdateMonth = "02";
    }
    else
    {
        $UpdateMonth = "03";
    }
}

if (($month != 10) && ($month != 11) && ($month != 12))
{
    if(($month&1) && ($TodaysDate != 31))
    {
        $DateAfterThreeMonths = $year."-".$UpdateMonth."-".$TodaysDate;
    }
    else if (($month&1) && ($TodaysDate == 31))
    {
        $DateAfterThreeMonths = $year."-".$UpdateMonth."-30";
    } 
    else {
        $DateAfterThreeMonths = $year."-".$UpdateMonth."-".$TodaysDate;
    }
}
else if ($month == 11)
{
    if (($TodaysDate == 28) || ($TodaysDate == 29) || ($TodaysDate == 30))
    {
        if ($IsLeapYear == 1)
        {
            $DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-28";
        }
        else if ($IsNextYearLeap == 1)
        {
            $DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-29";
        }
        else
        {
            $DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-28";
        }
    }
    else
    {
        $DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-".$TodaysDate;
    }
}
else
{
    $DateAfterThreeMonths = ($year+1)."-".$UpdateMonth."-".$TodaysDate;
}
echo $DateAfterThreeMonths; 
?>

一番上にあるこのコードを使用して、手動でチェックすることができます:-

// Just change the values of $month, $year, $TodaysDate
$month = 11;
$year = 2012;
$IsLeapYear = date('L');
$NextYear = $year + 1;
$IsNextYearLeap = date('L', mktime(0, 0, 0, 1, 1, $NextYear));
$TodaysDate = 31;

コードをコピーして貼り付けるだけで、ブラウザで確認できます:)

于 2012-04-23T12:21:56.633 に答える
-2

PHP マニュアルの例:

$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));

だから試してみてください:

$lastmonth = mktime(0, 0, 0, date("m")+3,  date("d"),   date("Y"));
于 2012-04-23T06:40:14.553 に答える