#33456 [Com]: strtotime loosing 2 hours

From: Date: Sat, 25 Jun 2005 00:20:31 +0000
Subject: #33456 [Com]: strtotime loosing 2 hours
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-80993@lists.php.net to get a copy of this message
ID: 33456 Comment by: nickj-phpbugs at nickj dot org Reported By: serge at skycomp dot ca Status: Assigned Bug Type: Date/time related Operating System: Linux PHP Version: 4.3.11 Assigned To: derick New Comment: Results of testing on PHP-5.1-dev CVS (php5-200506222230), with various format strings: ============================================================== <?php $formats = array ( // CHANGE : RESULT ON PHP-5.1-DEV '%A, %B %e %Y at %r',// original: +1 week +12 hours '%A %B %e %Y at %r', // remove comma: +1 week +12 hours '%A %B %e %Y %r', // remove 'at': +1 week -2 hours '%r %A %B %e %Y', // move %r to front: +1 week '%r %B %e %Y' // remove the '%A' (day): -2 hours ); foreach ($formats as $format) { print "-------- $format -----------\n"; $timestr="Friday at 7pm"; print "Starting Value: '$timestr'\n"; for($x=1; $x<=10; $x++) { $tStamp = strtotime($timestr); $timestr=strftime($format,$tStamp); print "x: $x; timestr: '$timestr'; tStamp: $tStamp\n"; } } ?> Previous Comments: ------------------------------------------------------------------------ [2005-06-24 01:10:38] serge at skycomp dot ca Ok I'll see about testing it agains the latest CVS if I have a chance. A 100% php example is as follows: <? $timestr="Friday at 7pm"; print "Starting Value: '$timestr'\n"; for( $x=1; $x<=10; $x++) { $timestr=strftime('%A, %B %e %Y at %r',strtotime($timestr)); print "The string is now: '$timestr'\n"; } ?> ------------------------------------------------------------------------ [2005-06-24 00:58:40] tony2001@php.net Right. And I didn't ask you to upgrade the server. I asked to to try the latest snapshot. And I'd really appreciate if you provide a reproduce code without HTML/forms/etc. Just a plain, short and clean PHP code that demonstrates the problem. Thanks in advance. ------------------------------------------------------------------------ [2005-06-24 00:55:09] serge at skycomp dot ca This server does not run php5. It's on php4 ------------------------------------------------------------------------ [2005-06-24 00:48:26] tony2001@php.net Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-06-24 00:13:31] serge at skycomp dot ca Description: ------------ It seems that strtotime is loosing time. I'm loosing 2 hours on every call to it and I'm not sure why. The issue seems to be with the "at" text in the format string but I am unsure why the text "at" would make the timestamp lose exactly 2 hours. Reproduce code: --------------- <? $_REQUEST['event_time']=strftime('%A, %B %e %Y at %r',strtotime($_REQUEST['event_time'])); ?> <form action='<?=$_SERVER['PHP_SELF']?>'> <input size='50' type='text' name='event_time' value='<?=$_REQUEST['event_time']?>' <input type="submit"> </form> Expected result: ---------------- The output should be the formated representation from what was inputted. If sumbit is clicked again without changed the text field the value should not change since strtotime should generate a proper and valid timestamp which strftime formats again. Actual result: -------------- Relative to today I type: friday at 7pm click submit and the value of the text box is now: Friday, June 24 2005 at 05:00:00 PM I don't type or change anything. Simply click submit again: Friday, June 24 2005 at 03:00:00 PM Every time I click submit the timestamp looses 2 hours. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33456&edit=1

« previous php.bugs (#80993) next »