Php 从日期中减去若干年

Php 从日期中减去若干年,php,date,Php,Date,假设我有代码:date('Y')。“-”.date('m')。“-”.date('d')我该如何从代码给出的日期开始删除若干年?对于您的情况,您可以利用PHP的隐式类型转换,只需使用 (date('Y')-42)."-".date('m')."-".date('d') 或更短 (date('Y')-42)."-".date('m-d') 但是,正如阿尔瓦罗·G·维卡里奥在一篇评论中所观察到的那样,可怕的2月29日并不是所有年份都存在的,因此你必须使用它 例如: $someDay = strt

假设我有代码:
date('Y')。“-”.date('m')。“-”.date('d')
我该如何从代码给出的日期开始删除若干年?

对于您的情况,您可以利用PHP的隐式类型转换,只需使用

(date('Y')-42)."-".date('m')."-".date('d')
或更短

(date('Y')-42)."-".date('m-d')
但是,正如阿尔瓦罗·G·维卡里奥在一篇评论中所观察到的那样,可怕的2月29日并不是所有年份都存在的,因此你必须使用它

例如:

$someDay = strtotime('2009-11-23');
$threeYearsBefore = strtotime('-3 years', $someDay);
echo date('Y-m-d', $threeYearsBefore);
或者,相对于当前时间

$threeYearsBefore = strtotime('-3 years');
echo date('Y-m-d', $threeYearsBefore);
由于您的打印代码只是这个的一个复杂版本:

echo date('Y-m-d', $date);
。。。您可以将所有内容简化为一行:

echo date('Y-m-d', strtotime('-2 years'));

从PHP5.2开始,您还可以使用该类来完成:

$now = new DateTime();
$two_years_ago = $now->sub(new DateInterval("P2Y"));
echo $two_years_ago->format('Y-m-d');

回音日期(“Y-m-d”,标准时间('-20年”)

删除若干年?你说的是减法吗?@SilentGhost-是的,但是PHP的类型太弱了,不足以让它工作。@DogpoonYourshoe-只是不要在几个月或几天内尝试同样的技巧!;-)所以<代码>2012-02-29减去两年等于
2010-02-29
-P“只是不要在几个月或几天内尝试同样的把戏!”我附和!它工作多年的原因是它们总是整数的表示形式,但是月份和天数可能有前导零,PHP将“04”转换为整数0。@阿尔瓦罗·G·维卡里奥我不明白你想说什么。@SilentGhost-当然你是对的。我只是对原始代码进行了最少的修改。这似乎是更干净的解决方案。
$now = new DateTime();
$two_years_ago = $now->sub(new DateInterval("P2Y"));
echo $two_years_ago->format('Y-m-d');