の最終日を超えない月に日追加(例:3。)この日付に追加 - それは(04)を追加しますが、ヶ月を超えてはならない - 期待される出力 - 20160430000000
- 4月30日は、私はこのフォームで日付を持っている月のPHP
同様に、20160226000000
+ 5日には、それがジャンプしてはならない、つまり、20160229000000
すなわちうるう年2月を返す必要がありますもう1ヶ月。
ヒント/アイデアはありますか?あなたはこのように試みることができる。このため
の最終日を超えない月に日追加(例:3。)この日付に追加 - それは(04)を追加しますが、ヶ月を超えてはならない - 期待される出力 - 20160430000000
- 4月30日は、私はこのフォームで日付を持っている月のPHP
同様に、20160226000000
+ 5日には、それがジャンプしてはならない、つまり、20160229000000
すなわちうるう年2月を返す必要がありますもう1ヶ月。
ヒント/アイデアはありますか?あなたはこのように試みることができる。このため
別の方法としては、それをチェックアウトするDateTime
クラスを使用するために、次のようになります。もちろん
まず入力を通して、あなたのオブジェクトを作成します。次に、月オブジェクトの終了日を設定します。
その後、追加して終了日を超えているかどうかを確認します。はい、最後にそれを設定した場合、いない場合は、その後、加算結果を得る:追加日が最終日超えた場合
$day = 5; // days to be added
$date = '20160226000000'; // input date
$dt = DateTime::createFromFormat('YmdHis', $date); // create the input date
$end = clone $dt; // clone/copy the input
$end->modify('last day of this month'); // and set it to last day
$dt->add(DateInterval::createFromDateString("+{$day} days")); // add x days
// make comparision
$final_date = ($dt > $end) ? $end->format('YmdHis') : $dt->format('YmdHis');
echo $final_date;
素敵でエレガント! +1 – mitkosoft
これもうまくいきました、ありがとうございました – jitendrapurohit
私は 'DateTimeImmutable'を使って同様のことを提案しようとしていましたが、基本的に同じロジックです。 +1: – Narf
:月場合
$given_date = 20160428000000;
$no_of_day = 3;
if(date('m',strtotime($given_date)) < date('m',strtotime($given_date ." +".$no_of_day."days"))){
echo "Exceeded to next month <br/>";
echo "Last date of month should be: ".date("t M Y", strtotime($given_date));
}
else {
echo "Next date will be after ".$no_of_day." day(s)<br/>";
echo date('d M Y',strtotime($given_date ." +".$no_of_day."days"));
}
は、それが現在の月の最後の日付を表示します来月にジャンプします。 それ以外の場合は、延長日数の後に日付が表示されます。
ありがとう、しかし、これは私に最後の日付を与えるでしょう - 4月30日? – jitendrapurohit
@jitendrapurohit!はい、それを試してみてください。 – Yash
はい、うまくいきます!ありがとう – jitendrapurohit
を、新しい日付として最後の日を選択します。
<?php
$date_orig = 20160226000000;
$add_day = 5; # No. of days to add
$added_date = strtotime($date_orig. ' + '.$add_day.' days'); // Add $add_day to $date_orig
$last_date = strtotime(date("YmtHis", strtotime($date_orig))); // Last day of $date_orig
$new_date = ($added_date > $last_date) ? $last_date : $added_date; // check the added date exceeds the last date
$new_date_format = date("YmdHis", $new_date); // Format Date
echo $new_date_format;
?>
月間の日付と最終日の間隔を取得します。この間隔が追加間隔よりも短い場合は、その月の最後の日に戻ります。 – mitkosoft