web-dev-qa-db-ja.com

$ date + 1年?

指定した日付から1年後の日付を取得しようとしています。

私のコードは次のようになります。

$futureDate=date('Y-m-d', strtotime('+one year', $startDate));

間違った日付を返しています。なぜアイデアがありますか?

72
Matt

今日の日付に1年を追加するには、次を使用します。

$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));

他の例では、たとえば次のようにタイムスタンプ値で$ StartingDateを初期化する必要があります。

$StartingDate = mktime();  // todays date as a timestamp

これを試して

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));

または

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
82
Nidhin Baby
$futureDate=date('Y-m-d', strtotime('+1 year'));

$ futureDateは今から1年後です!

$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );

$ futureDateは$ startDateから1年です!

187
Misho

試してください:$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));

8
K Prime
// Declare a variable for this year 
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;

// Check your code
    echo "This year is ";
    echo $this_year;
    echo "<br />";
    echo "Next year is ";
    echo $next_year;
    echo "<br />";
    echo "The year after that is ";
    echo $year_after;
6
AnarchyOutlaw

ちょうど同じ問題がありましたが、これは最も簡単な解決策でした:

<?php (date('Y')+1).date('-m-d'); ?>
5
Gardenee
//1 year from today's date
echo date('d-m-Y', strtotime('+1 year'));

//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));

この簡単なコードが将来誰かを助けることを願っています:)

3
Developer

私はOOアプローチを好む:

$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))

DateTimeImmutableを使用すると、元の日付も変更されます。 DateTimeImmutableの詳細: http://php.net/manual/en/class.datetimeimmutable.php


今日の日付だけが必要な場合は、いつでも実行できます。

new \DateTimeImmutable('-1 Month');
3
Andrew Atkinson

PHP 5.3を使用している場合、デフォルトのタイムゾーンを設定する必要があるためです。

date_default_timezone_set()
2
SeanJA

strtotime()bool(false)を返します。これは、文字列'+one year'を解析できないためです(「1」を理解しません)。 falseは、integerタイムスタンプ0に暗黙的にキャストされます。他の関数に出力する前に、strtotime()の出力がbool(false)ではないことを確認することをお勧めします。

ドキュメントから:

戻り値

成功した場合はタイムスタンプを返し、そうでない場合はFALSEを返します。 PHP 5.1.0より前では、この関数は失敗すると-1を返しました。

2
Frank Farmer

これを試して

$nextyear  = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)),   date("d",strtotime($startDate)),   date("Y",strtotime($startDate))+1));
1
Treby

よりシンプルで洗練されていないソリューションもあります。

$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
0
Daniel Lima