|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2011-05-23 15:55 UTC] salathe@php.net
Description:
------------
Date modifications utilizing the "weekdays" keyword change the resulting date to
have zero values for hour/minute/second units. Prior to PHP 5.3.6, the time
values were unaffected.
Test script:
---------------
<?php
$dt = new DateTime('2011-05-10 12:34:56', new DateTimeZone('UTC'));
$dt->modify('10 weekdays');
echo $dt->format('r');
?>
Expected result:
----------------
Tue, 24 May 2011 12:34:56 +0000
Actual result:
--------------
Tue, 24 May 2011 00:00:00 +0000
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 17:00:02 2025 UTC |
This bug also applies to the strtotime() function. <?php $start = '2015-09-25 11:25:23'; $formats = array( '1 second', '1 minute', '1 hour', '1 day', '1 weekday', '1 weeks', '1 month', '1 year', ); echo "Start\t\t\tDateTime\t\tstrtotime\t\tformat\n"; foreach ($formats as $format): $datetime = new DateTime($start); echo $datetime->format('Y-m-d H:i:s')."\t"; $datetime->modify($format); echo date('Y-m-d H:i:s', strtotime($format, strtotime($start)))."\t"; echo $format."\n"; endforeach; ?> Outputs: Start DateTime strtotime format 2015-09-25 11:25:23 2015-09-25 11:25:24 2015-09-25 11:25:24 1 second 2015-09-25 11:25:23 2015-09-25 11:26:23 2015-09-25 11:26:23 1 minute 2015-09-25 11:25:23 2015-09-25 12:25:23 2015-09-25 12:25:23 1 hour 2015-09-25 11:25:23 2015-09-26 11:25:23 2015-09-26 11:25:23 1 day 2015-09-25 11:25:23 2015-09-28 00:00:00 2015-09-28 00:00:00 1 weekday 2015-09-25 11:25:23 2015-10-02 11:25:23 2015-10-02 11:25:23 1 weeks 2015-09-25 11:25:23 2015-10-25 11:25:23 2015-10-25 11:25:23 1 month 2015-09-25 11:25:23 2016-09-25 11:25:23 2016-09-25 11:25:23 1 year