16

私はこの形式(YYYYMM)の日付を持っています:

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

たとえば、201203 から 4 か月減算したいとします。201203 - 4=だからできない201199

201203 - 4出力する必要があります201111(2011 年 11 月)

たぶん、文字列を日付に変換してから、-4 か月で strtotime に渡す必要がありますか?

提案はありますか?

4

8 に答える 8

38

strtotimePHPで使用できます:

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

この記事が役に立ちます。

于 2012-05-17T10:25:27.620 に答える
9

strtotime()それを行うことができますが、日付を解析するには、月の日を追加する必要があります。

$input = '201203';

$input .= '01';

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

echo date('Ym', $date);

2011 年 11 月のアウトプット:

201111
于 2012-05-17T10:30:30.020 に答える
8

バージョンとは別に、PHP 5.3 以降ではandstrtotimeも使用できます。DateTimeDateInterval

$date = DateTime::createFromFormat("Ym", "201201");
$interval = new DateInterval("P4M"); // 4 months
$fourMonthsEarlier = $date->sub($interval);
echo $fourMonthsEarlier->format("Ym");
于 2012-05-17T10:35:36.993 に答える
1

EXの場合 $da=2014-04-01

6か月をマイナスしたい場合は、これを使用してください..

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

エコー $final;

于 2014-04-17T08:10:42.537 に答える
0

strtotimeを使用して、文字列を秒単位の UNIX タイムスタンプに変換できます。time()現在の UNIX タイムスタンプが表示されます。それらを引いて秒単位で日付を取得し、で割って日単位で60*60*24取得します

于 2012-05-17T10:25:25.313 に答える
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;

2月が行方不明!

于 2014-08-29T12:14:57.447 に答える