我正在尝试获取距离我指定的日期一年后的日期。
我的代码如下所示:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
返回错误的日期。有什么想法吗?
$futureDate=date('Y-m-d', strtotime('+1 year'));
$futureDate 是一年后!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$futureDate 是从 $startDate 算起的一年!
要将今天的日期添加一年,请使用以下命令:
$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"));
//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'));
希望这段更简单的代码对将来的人有所帮助:)
尝试:
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
刚刚遇到了同样的问题,但这是最简单的解决方案:
<?php (date('Y')+1).date('-m-d'); ?>
// 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;
我更喜欢面向对象的方法:
$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');
如果你使用的是PHP 5.3,那是因为你需要设置默认时区:
date_default_timezone_set()
strtotime()
正在返回bool(false)
,因为它无法解析字符串'+one year'
(它不理解“one”)。然后 false
被隐式转换为 integer
时间戳 0
。在将其推入其他函数之前,最好验证 strtotime()
的输出不是 bool(false)
。
返回值
成功时返回时间戳,FALSE 否则。在 PHP 5.1.0 之前,此 失败时函数将返回 -1。
试试这个
$nextyear = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)), date("d",strtotime($startDate)), date("Y",strtotime($startDate))+1));
还有一个更简单且不太复杂的解决方案:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
您可以使用 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)));
就我而言(我想在当前日期基础上添加 3 年),解决方案是:
$future_date = date('Y-m-d', strtotime("now + 3 years"));
致 Gardenee、Treby 和 Daniel Lima: 2月29日会发生什么?有时二月只有 28 天:)
我的解决方案是:
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);
我只想要 1 年范围的 HTML5 日期输入。这对我有用:
<input type="date"
min="<?php echo date("Y-m-d"); ?>"
max="<?php echo date((intval(date("Y"))+1)."-m-d"); ?>"
/>
一年后:
date((intval(date("Y"))+1)."-m-d");