note 120238 added to datetime.modify

From: Date: Tue, 29 Nov 2016 22:54:12 +0000
Subject: note 120238 added to datetime.modify
Groups: php.notes 
Request: Send a blank email to php-notes+get-207745@lists.php.net to get a copy of this message
A very simple way to ensure we do not cross over month boundaries when adding months is to just go back a few days if the day number got reset: <?php function addMonths($date,$months) { $orig_day = $date->format("d"); $date->modify("+".$months." months"); while ($date->format("d")<$orig_day && $date->format("d")<5) { $date->modify("-1 day"); } } for ($i=0;$i<5;$i++) { $d = new DateTime("2000-01-10"); addmonths($d,$i); echo $d->format("Y-m-d")."<br>"; } for ($i=0;$i<5;$i++) { $d = new DateTime("2000-01-31"); addmonths($d,$i); echo $d->format("Y-m-d")."<br>"; } ?> prints: 2000-01-10 2000-02-10 2000-03-10 2000-04-10 2000-05-10 2000-01-31 2000-02-29 2000-03-31 2000-04-30 2000-05-31 ---- Server IP: 72.52.91.14 Probable Submitter: 159.205.249.53 ---- Manual Page -- http://php.net/manual/en/datetime.modify.php Edit -- https://master.php.net/note/edit/120238 Del: integrated -- https://master.php.net/note/delete/120238/integrated Del: useless -- https://master.php.net/note/delete/120238/useless Del: bad code -- https://master.php.net/note/delete/120238/bad+code Del: spam -- https://master.php.net/note/delete/120238/spam Del: non-english -- https://master.php.net/note/delete/120238/non-english Del: in docs -- https://master.php.net/note/delete/120238/in+docs Del: other reasons-- https://master.php.net/note/delete/120238 Reject -- https://master.php.net/note/reject/120238 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#207745) next »