我有这种格式的约会:
2009-01-01
如何返回相同的日期,但提前一年?
答案 0 :(得分:119)
您可以使用strtotime
:
$date = strtotime('2010-01-01 -1 year');
strtotime
函数返回一个unix时间戳,以获取可以使用date
的格式化字符串:
echo date('Y-m-d', $date); // echoes '2009-01-01'
答案 1 :(得分:87)
使用strtotime()函数:
$time = strtotime("-1 year", time());
$date = date("Y-m-d", $time);
答案 2 :(得分:44)
使用DateTime对象...
$time = new DateTime('2099-01-01');
$newtime = $time->modify('-1 year')->format('Y-m-d');
或立即使用今天
$time = new DateTime('now');
$newtime = $time->modify('-1 year')->format('Y-m-d');
答案 3 :(得分:22)
我使用和运作良好的最简单方法
date('Y-m-d', strtotime('-1 year'));
这很完美..希望这也会帮助别人.. :)
答案 4 :(得分:9)
// set your date here
$mydate = "2009-01-01";
/* strtotime accepts two parameters.
The first parameter tells what it should compute.
The second parameter defines what source date it should use. */
$lastyear = strtotime("-1 year", strtotime($mydate));
// format and display the computed date
echo date("Y-m-d", $lastyear);
答案 5 :(得分:3)
尽管对此问题有许多可接受的答案,但我没有看到使用sub
对象的\Datetime
方法的任何示例:https://www.php.net/manual/en/datetime.sub.php
因此,作为参考,您还可以使用\DateInterval
来修改\Datetime
对象:
$date = new \DateTime('2009-01-01');
$date->sub(new \DateInterval('P1Y'));
echo $date->format('Y-m-d');
哪个返回:
2008-01-01
有关\DateInterval
的更多信息,请参阅文档:https://www.php.net/manual/en/class.dateinterval.php
答案 6 :(得分:2)
在我的网站上,要检查注册人是否18岁,我只使用了以下内容:
$legalAge = date('Y-m-d', strtotime('-18 year'));
之后,仅比较wo日期。
希望它可以帮助某人。
答案 7 :(得分:-2)
您可以使用以下功能从日期中减去1或任何年份。
function yearstodate($years) {
$now = date("Y-m-d");
$now = explode('-', $now);
$year = $now[0];
$month = $now[1];
$day = $now[2];
$converted_year = $year - $years;
echo $now = $converted_year."-".$month."-".$day;
}
$number_to_subtract = "1";
echo yearstodate($number_to_subtract);
在上面的示例中,您还可以使用以下
$user_age_min = "-"."1";
echo date('Y-m-d', strtotime($user_age_min.'year'));