当前日期减去4个月?

时间:2012-05-17 10:22:34

标签: php date

我有这种格式的日期(YYYYMM):

201201  // Gen, 2012
201202  // Feb, 2012
201203  // ecc

让我们说从201203年开始,我想减去4个月。我不能201203 - 4,因为它是201199

201203 - 4应输出201111(2011年11月)

也许我应该将我的字符串转换为日期,然后将其传递给strtotime,持续4个月?

有什么建议吗?

8 个答案:

答案 0 :(得分:30)

您可以在PHP中使用strtotime

$date = strtotime('2012-05-01 -4 months');

article会对您有所帮助。

答案 1 :(得分:8)

strtotime()可以执行此操作,但您需要添加一个月中的某一天来解析日期:

$input = '201203';

$input .= '01';

$date = strtotime($input .' -4 months');

echo date('Ym', $date);

2011年11月的产出:

201111

答案 2 :(得分:8)

strtotime版本外,自PHP 5.3起,您还可以使用DateTimeDateInterval

$date = DateTime::createFromFormat("Ym", "201201");
$interval = new DateInterval("P4M"); // 4 months
$fourMonthsEarlier = $date->sub($interval);
echo $fourMonthsEarlier->format("Ym");

答案 3 :(得分:0)

您可以使用strtotime将字符串转换为UNIX时间戳,以秒为单位。 time()将为您提供当前的UNIX时间戳。减去它们以获得日期的秒数,并除以60*60*24以获得它的天数

答案 4 :(得分:0)

表示EX $ da = 2014-04-01

如果你想减去6个月使用这个..

$date = strtotime($da .' -4 months');
$final=date('Y-m-d', $date);

echo $ final;

答案 5 :(得分:0)

以前的代码不起作用:

$da='2014-08-29';
$date = strtotime($da .' -6 months');
$final=date('Y-m-d', $date);
echo $final;
$date = strtotime($da .' -7 months');
$final=date('Y-m-d', $date);
echo $final;

二月不见了!

答案 6 :(得分:0)

最终日期=当前日期-4个月

<?php
$current_date = date("Y-m-d");

$final_date = date("Y-m-d", strtotime($current_date." -4 months"));

echo $final_date;

答案 7 :(得分:-1)

$date = '2016-09-01 00:00:00.000000';

$date2 = date("Y-m-d H:i:s.u", strtotime($date." -4 months"));

echo $date2; 

运行此代码后,您将获得2016-05-01 00:00:00.000000