10

現在の日付から 6 か月後の月を取得しようとしています。

私は使用してみました:

date('d', strtotime('+6 month', time()));

しかし、うまくいかないようで、常に返されます01。これを行うより良い方法はありますか?

ありがとうございました!

4

4 に答える 4

21

DateTimeを使用すると、はるかに使いやすくなります。

$datetime = new \DateTime();
$datetime->modify('+6 months');
echo $datetime->format('d');

また

$datetime = new \DateTime();
$datetime->add(new DateInterval('P6M'));
echo $datetime->format('d');

またはPHPバージョン5.4以降

echo (new \DateTime())->add(new \DateInterval('P6M'))->format('d');
于 2012-12-20T16:52:34.967 に答える
4

DateTime() オブジェクトではなく strtotime と date 関数を引き続き使用する場合は、次のようにします。

date('d', strtotime('+6 months'));
于 2012-12-20T16:54:25.087 に答える
1

DateTimeクラスと組み合わせてクラスを使用できますDateInterval

<?php
$date = new DateTime();
$date->add(new DateInterval('P6M'));

echo $date->format('d M Y');
于 2012-12-20T16:57:34.190 に答える
0

time()デフォルトであるため、strtotimeに渡す必要はありません。

それとは別に、あなたのアプローチは正しいです-月ではdate('d')なく(日を出している)取ることを除いて、そうするべきです。date('m')echo date('m', strtotime('+6 month'));

DateTimeそれにもかかわらず、ジョンが述べた方法を使用することをお勧めします。DateTime「古い」日付関数よりもいくつかの利点があります。たとえば、UNIX ビッグバン以降の秒数が 32 ビット整数に収まらなくなった場合でも動作を停止しません。

于 2012-12-20T16:55:10.080 に答える