PHP 4.0 Bug #8242: the date('B') gives bogus output when system date is Thu Dec 14 01:56:02 EET 20
| From: | boian at bonev dot com | Date: | Wed, 13 Dec 2000 23:59:39 +0000 |
| Subject: | PHP 4.0 Bug #8242: the date('B') gives bogus output when system date is Thu Dec 14 01:56:02 EET 20 | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-41263@lists.php.net to get a copy of this message | ||
From: boian@bonev.com
Operating system: Linux glibc 2.1
PHP version: 4.0.3pl1
PHP Bug Type: Date/time related
Bug description: the date('B') gives bogus output when system date is Thu Dec 14 01:56:02
EET 20
Sometimes in tzones GMT+something the calculation below can give negative or time greater than 1000
the fix just checks both cases since timezone cannot add more than a day (or less respectively) or
in other terms 1000 swatch beats
case 'B': /* Swatch Beat a.k.a. Internet Time */
beat = (((((long)the_time)-(((long)the_time) -
((((long)the_time) % 86400) + 3600))) * 10) / 864);
-- the fix --
if (beat < 0) beat += 1000;
if (beat > 999) beat -= 1000;
-- end fix --
sprintf(tmp_buff, "%03d", beat); /* SAFE */
strcat(return_value->value.str.val, tmp_buff);
break;
--
Edit Bug report at: http://bugs.php.net/?id=8242&edit=1