Re: PHP 4.0 Bug #6425 Updated: date() parsing functionality provides unexpected results.

From: Date: Fri, 03 Nov 2000 03:05:13 +0000
Subject: Re: PHP 4.0 Bug #6425 Updated: date() parsing functionality provides unexpected results.
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-36899@lists.php.net to get a copy of this message
It seems somewhat fixed, though now it reports an "unknown error" for each of the dates which it had problems for in the past. Enclosed is a log of the program output which was generated by the code snippet below using PHP 4.0.4 development version dated 22 Oct 2000 ----- Original Message ----- From: Bug Database <php-dev@lists.php.net> To: <hirschf@home.com> Sent: Thursday, November 02, 2000 3:12 PM Subject: PHP 4.0 Bug #6425 Updated: date() parsing functionality provides unexpected results. > ID: 6425 > Updated by: dbeu > Reported By: hirschf@home.com > Status: Feedback > Bug Type: Date/time related > Assigned To: > Comments: > > could you plese try the dev build from php4win.de and report wheter this is fixed? > > Previous Comments: > -------------------------------------------------------------------------- - > > [2000-09-06 17:16:51] sniper@php.net > reclassified.. > > -------------------------------------------------------------------------- - > > [2000-09-06 17:15:54] sniper@php.net > User feedback: > --------------------------- > I was actually contacted on this issue once, and sent a corrected reply as > follows. Keep in mind, this issue only occurs in _Windows_ versions of PHP > including PHP 4.0.1pl2 and 4.0.2. UNIX varients do not seem effected.: > > I've written a specific script to show this issue: > > --- cut --- > <?php > for ( $i = 1900; $i < 2050; $i++) { > $datep = "$i-01-01"; > print "Trying: $datep ... "; > print date("F j, Y", strtotime($datep)); > print "<BR>"; // For clean display sake only > } > ?> > --- cut --- > > I also tested this with dates in 12-31, and 1969 failed, so 1970-01-01 is > the lowest possible date: > > --- cut --- > Trying: 1900-01-01 ... > Warning: unexpected error in date() in d:fhirschmysitetestdate.php on > line 6 > > Trying: 1901-01-01 ... > Warning: unexpected error in date() in d:fhirschmysitetestdate.php on > line 6 > > Trying: 1902-01-01 ... > Warning: unexpected error in date() in d:fhirschmysitetestdate.php on > line 6 > . > . > . > Trying: 1969-01-01 ... > Warning: unexpected error in date() in d:fhirschmysitetestdate.php on > line 6 > > Trying: 1970-01-01 ... January 1, 1970 > Trying: 1971-01-01 ... January 1, 1971 > Trying: 1972-01-01 ... January 1, 1972 > Trying: 1973-01-01 ... January 1, 1973 > Trying: 1974-01-01 > . > . > . > Trying: 2038-01-01 ... January 1, 2038 > Trying: 2039-01-01 ... > Warning: unexpected error in date() in d:fhirschmysitetestdate.php on > line 6 > > Trying: 2040-01-01 ... > Warning: unexpected error in date() in d:fhirschmysitetestdate.php on > line 6 > ... January 1, 1974 > --- cut --- > > It seems likely that the date() function uses internal calls within the O/S > somehow on Windows, as this would correlate to what Windows/MSDOS is > (in)capable of doing. However, it hardly seems to be a desirable side-effect > in a production quality programming language. Anyhow, let me know if there > is other documentation you need from me. > > --------------------------------------- > > Editorial note: PLEASE answer next time using the > web-interface.. =) > > --Jani > > > -------------------------------------------------------------------------- - > > [2000-09-05 19:43:17] sniper@php.net > Your example code was buggy, below corrected one: > > <?php > > function parseDate($date,$format) { > $dateString = date($format , strtotime($date)); > return $dateString; > } > > $db_birth_date = "1969-09-13 00:00:00"; > $birth_date = parseDate($db_birth_date,"F j, Y"); > echo $birth_date; > > ?> > > And this works just like it should (in Linux).. > Please try this and report back. > > --Jani > > -------------------------------------------------------------------------- - > > [2000-08-29 19:58:01] hirschf@home.com > On Windows NT, using Apache tested in PHP 4.0.1PL2, 4.0.2 for Win NT using > Apache CGI PHP. The function date() with MySQL date format of > > YYYY-MM-DD HH:MI:SS > > yields an error when using dates with a value lower than 1970-01-01 00:00:00. > The following error is actually reported: > > Warning: unexpected error in date() in Program.php line XXX > > Below is a script which reproduces this error: > > $db_birth_date = "1969-09-13 00:00:00"; > $birth_date = $parseDate($db_birth_date',"F j, Y"); > > function parseDate($date,$format) { > $dateString = date($format , strtotime($date)); > return $dateString; > } > > Have not tested this issue on UNIX system yet. > > -------------------------------------------------------------------------- - > > > Full Bug description available at: http://bugs.php.net/?id=6425 >

Attachment: [application/octet-stream] test.log
« previous php.dev (#36899) next »