1--TEST-- 2DatePeriod: take microseconds into account 3--FILE-- 4<?php 5date_default_timezone_set('UTC'); 6$start = new DateTime('2010-06-07T01:02:03.456789'); 7$end = new DateTime('2010-06-10T01:02:03.456789'); 8$interval = new DateInterval('P1D'); 9 10echo "from " . $start->format('Y-m-d H:i:s.u') . " to " . $end->format('Y-m-d H:i:s.u') . " (exclusive)\n"; 11foreach (new DatePeriod($start, $interval, $end) as $day) { 12 echo $day->format('Y-m-d H:i:s.u') . "\n"; 13} 14 15echo "from " . $start->format('Y-m-d H:i:s.u') . " to " . $end->format('Y-m-d H:i:s.u') . " (inclusive)\n"; 16foreach (new DatePeriod($start, $interval, $end, DatePeriod::INCLUDE_END_DATE) as $day) { 17 echo $day->format('Y-m-d H:i:s.u') . "\n"; 18} 19 20$end = new DateTime('2010-06-10T01:02:03.456790'); 21echo "from " . $start->format('Y-m-d H:i:s.u') . " to " . $end->format('Y-m-d H:i:s.u') . " (exclusive)\n"; 22foreach (new DatePeriod($start, $interval, $end) as $day) { 23 echo $day->format('Y-m-d H:i:s.u') . "\n"; 24} 25 26$end = new DateTime('2010-06-10T01:02:03.456788'); 27echo "from " . $start->format('Y-m-d H:i:s.u') . " to " . $end->format('Y-m-d H:i:s.u') . " (inclusive)\n"; 28foreach (new DatePeriod($start, $interval, $end, DatePeriod::INCLUDE_END_DATE) as $day) { 29 echo $day->format('Y-m-d H:i:s.u') . "\n"; 30} 31 32?> 33--EXPECT-- 34from 2010-06-07 01:02:03.456789 to 2010-06-10 01:02:03.456789 (exclusive) 352010-06-07 01:02:03.456789 362010-06-08 01:02:03.456789 372010-06-09 01:02:03.456789 38from 2010-06-07 01:02:03.456789 to 2010-06-10 01:02:03.456789 (inclusive) 392010-06-07 01:02:03.456789 402010-06-08 01:02:03.456789 412010-06-09 01:02:03.456789 422010-06-10 01:02:03.456789 43from 2010-06-07 01:02:03.456789 to 2010-06-10 01:02:03.456790 (exclusive) 442010-06-07 01:02:03.456789 452010-06-08 01:02:03.456789 462010-06-09 01:02:03.456789 472010-06-10 01:02:03.456789 48from 2010-06-07 01:02:03.456789 to 2010-06-10 01:02:03.456788 (inclusive) 492010-06-07 01:02:03.456789 502010-06-08 01:02:03.456789 512010-06-09 01:02:03.456789 52