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);