Php $date+;一年?

Php $date+;一年?,php,strtotime,Php,Strtotime,我正在尝试获取一个从我指定的日期算起一年的日期 我的代码如下所示: $futureDate=date('Y-m-d', strtotime('+one year', $startDate)); 它返回了错误的日期。知道为什么吗?试试:$futureDate=date('Y-m-d',strottime('1年',$startDate))如果您使用的是PHP 5.3,这是因为您需要设置默认时区: date_default_timezone_set() 试试这个 $nextyear = dat

我正在尝试获取一个从我指定的日期算起一年的日期

我的代码如下所示:

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

它返回了错误的日期。知道为什么吗?

试试:
$futureDate=date('Y-m-d',strottime('1年',$startDate))

如果您使用的是PHP 5.3,这是因为您需要设置默认时区:

date_default_timezone_set()
试试这个

$nextyear  = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)),   date("d",strtotime($startDate)),   date("Y",strtotime($startDate))+1));
strotime()
正在返回
bool(false)
,因为它无法解析字符串
“+one year”
(它不理解“one”)
false
然后被隐式转换为
整数
时间戳
0
。最好先验证strotime()的输出是否为bool(false)
,然后再将其放入其他函数中

返回值

返回成功时的时间戳,FALSE 否则。在PHP5.1.0之前,此 函数将在失败时返回-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"));

$futureDate距离现在还有一年

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

$futureDate是从$startDate算起的一年

也有同样的问题,但这是最简单的解决方案:

<?php (date('Y')+1).date('-m-d'); ?>
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";

还有一个更简单、更不复杂的解决方案:

<?php (date('Y')+1).date('-m-d'); ?>
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
在我的情况下(我想在当前日期的基础上再加上3年),解决方案是:

$future_date = date('Y-m-d', strtotime("now + 3 years"));
致Gardenee、Treby和Daniel Lima: 2月29日会发生什么?有时二月只有28天:)

//为今年声明一个变量
$this_year=日期(“Y”);
//将1添加到变量中
$next_year=$this_year+1;
$year\u after=$this\u year+2;
//检查你的代码
回声“今年是”;
echo$今年;
回声“
”; 回声“明年是”; 下一年回声$; 回声“
”; 呼应“后一年是”; 回音$year_;
我更喜欢OO方法:

$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
使用
DateTimeImmutable
否则您也将修改原始日期! 有关DateTimeImmutable的更多信息:


如果您只想从今天开始,那么您可以始终执行以下操作:

new \DateTimeImmutable('-1 Month');
希望这段简单的代码对将来的人有所帮助:)

我的解决方案是:
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);

弗兰克·法默:你这么肯定吗?我宁愿等待OP的退休/评论。在我昨晚匆忙发布这篇文章时,我忘记了澄清——它返回了错误的日期。很抱歉谢谢你的帮助。像这样使用它来代替strottime(“+1年,$startDate”);虽然这确实返回了正确的答案,但另一个实际上也没有返回错误。。。只是错误的日期。strotime不会抛出错误。如果出现错误,它将返回false。如果未设置默认时区,PHP将抛出警告。。。虽然这显然不是他的意思,但我在你的代码上出错了,我把
改成
,它在
日期(“Y-m-d”,strotime(“+1年”。$startDate))
;加上“+365”而不是“+1年”就行了。谢谢如果是闰年的话,这不是一个突破吗?从PHP5.1开始,在没有参数的情况下调用时,mktime()会抛出一个E_严格的通知:使用time()函数。这里也是向下投票的。一天中的秒数、一年中的天数、一年中的秒数等都是可变的。如果你对“从现在起一年”感兴趣,你必须每隔“一年”通过考试。自行细分会导致闰日、闰秒和夏令时变化方面的错误。更糟糕的是,它导致了华丽的单元测试。为什么我的答案被否决了$ADEDONeyEAR=日期(“y”)+1//加一年有什么问题?是的,很好。我的生产代码会有这样的功能,但为了让它正常工作,我竭尽全力,所以将其精简为尽可能少的代码。谢谢很好,我用它来表示下一年:
$next_year=(date('Y')+1)
。greatn,谢谢,我喜欢这种方式。请注意,如果$startDate已经是一个时间戳(例如前面使用time()或mktime()函数创建的时间戳)而不是字符串,则不应将其包装在strotime中,否则它将无法工作。相反,请执行以下操作:
$futureDate=date('Y-m-d',strottime('1年',$startDate))如下面提到的K素数。
//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'));
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);