105

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

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

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

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

4

14 に答える 14

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

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

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

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

于 2013-01-25T15:17:08.760 に答える
106

今日の日付に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"));
于 2009-12-15T09:09:37.067 に答える
11
//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'));

この単純なコードが将来誰かに役立つことを願っています:)

于 2017-07-31T15:26:44.320 に答える
9

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

于 2009-12-15T03:52:59.520 に答える
7

同じ問題が発生しましたが、これが最も簡単な解決策でした。

<?php (date('Y')+1).date('-m-d'); ?>
于 2013-03-29T09:18:27.107 に答える
7
// 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;
于 2016-01-06T23:59:02.307 に答える
5

私は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');
于 2016-12-14T17:06:01.067 に答える
3

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

ドキュメントから:

戻り値

成功した場合はタイムスタンプを返し、それ以外の場合はFALSEを返します。PHP 5.1.0より前では、この関数は失敗時に-1を返していました。

于 2009-12-15T04:00:43.087 に答える
3

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

date_default_timezone_set()
于 2009-12-15T03:55:09.750 に答える
2

これを試して

$nextyear  = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)),   date("d",strtotime($startDate)),   date("Y",strtotime($startDate))+1));
于 2009-12-15T03:56:46.580 に答える
1

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

$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
于 2013-06-16T04:59:34.080 に答える
1

私の解決策は次のとおりです。date('Y-m-d', time()-60*60*24*365);

次の定義を使用して、より「読みやすく」することができます。

define('ONE_SECOND', 1);
define('ONE_MINUTE', 60 * ONE_SECOND);
define('ONE_HOUR',   60 * ONE_MINUTE);
define('ONE_DAY',    24 * ONE_HOUR);
define('ONE_YEAR',  365 * ONE_DAY);

date('Y-m-d', time()-ONE_YEAR);
于 2020-05-22T13:41:10.463 に答える
0

私の場合(現在の日付に3年を追加したい)、解決策は次のとおりです。

$future_date = date('Y-m-d', strtotime("now + 3 years"));

Gardenee、Treby、Daniel Limaへ:2月29日はどうなりますか?時々2月は28日しかありません:)

于 2014-11-04T13:48:27.973 に答える
0

strtotime()を使用して、将来の時間を取得できます。

//strtotime('+1 day');
//strtotime('+1 week');
//strtotime('+1 month');

 $now = date('Y-m-d'); 
 $oneYearLaterFromNow = date('Y-m-d', strtotime('+1 year'));
 $oneYearLaterFromAnyDate = date('Y-m-d', strtotime('+1 year', strtotime($anyValidDateString)));
于 2021-10-28T11:05:58.950 に答える