PHP 4.0 Bug #7705 Updated: sscanf does not zero pad decimal
| From: | derick@php.net | Date: | Wed, 08 Nov 2000 19:41:12 +0000 |
| Subject: | PHP 4.0 Bug #7705 Updated: sscanf does not zero pad decimal | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-37454@lists.php.net to get a copy of this message | ||
ID: 7705
Updated by: derick
Reported By: jccann@home.com
Status: Closed
Bug Type: *General Issues
Assigned To:
Comments:
This is not a bug, you parsed the day with a %02d, zo the value is interpreted as an number, if
you'd used:
sscanf( $Date, "%02s/%02s/%4d", &$DateMM, &$DateDD, &$DateYYYY ); it would be
fine (because then it's parsed as a string).
Previous Comments:
---------------------------------------------------------------------------
[2000-11-08 20:31:55] jccann@home.com
<?php
$Date = "06/15/2003";
sscanf( $Date, "%02d/%02d/%4d", &$DateMM, &$DateDD, &$DateYYYY );
print "date: $Date<br>";
print "MM: $DateMM<br>";
print "DD: $DateDD<br>";
print "YYYY: $DateYYYY<br>"
?>
produces this output:
Date: 06/15/2003
MM: 6
DD: 15
YYYY: 2003
Notice that for $DateMM, I specified '%02d", yet the parsed month is '6' and not
'06'.
According to Example 1 in the PHP manual for sprintf
(http://www.php.net/manual/html/function.sprintf.html) the correct format for zero padded integers
is:
sprintf ("%04d-%02d-%02d", $year, $month, $day);
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=7705