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

From: Date: Wed, 06 Sep 2000 00:54:39 +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-32276@lists.php.net to get a copy of this message
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.: ----------- snip -------------------- I actually introduced several bugs into this when I posted it to you. For explicitness sake, I will detail the precise means I call this code. I use this function within an inheritable class to parse SQL date formats and timestamps into a more friendly format. I call this function call exactly as follows for any specific date I wish to parse: $this->set('date_parse', $this->parseDate($this->get('date'), "F j, Y")); get() and set() are common accessor methods for all classes in the inheritance tree. They set values into a common associative array assigned to the object when it is created. The actual parseDate function is exactly as I sent it to you originally. I've played with the debugging on this by attempting to output dates in several formats using a print on this function with a wide range of dates. From my tests 1970-01-01 is the earliest date span that the function will output a parsed date value. All other attempts at earlier values return a PHP warning a no value in the variable. I've written a specific script to show this issue: <?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 } ?> I also tested this with dates in 12-31, and 1969 failed, so 1970-01-01 is the lowest possible date. The output of this script on my system is as follows. Since this is long, I will summarize other items of note here as well. Again, using PHP 4.0.2 with a Windows pre-compiled binary as CGI and Apache. Windows NT 4.0, on a Dell PIII Laptop purchased within the last year (doubt its a BIOS issue). This is Windows, not Linux.. I don't have similar problems on UNIX platforms (I currently develop on Windows, and implement onto UNIX since I can haul around a laptop on my way to and from work). 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. Trying: 1900-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1901-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1902-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1903-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1904-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1905-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1906-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1907-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1908-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1909-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1910-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1911-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1912-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1913-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1914-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1915-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1916-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1917-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1918-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1919-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1920-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1921-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1922-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1923-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1924-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1925-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1926-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1927-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1928-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1929-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1930-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1931-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1932-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1933-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1934-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1935-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1936-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1937-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1938-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1939-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1940-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1941-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1942-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1943-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1944-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1945-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1946-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1947-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1948-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1949-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1950-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1951-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1952-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1953-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1954-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1955-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1956-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1957-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1958-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1959-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1960-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1961-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1962-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1963-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1964-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1965-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1966-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1967-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1968-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 1969-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.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 ... January 1, 1974 Trying: 1975-01-01 ... January 1, 1975 Trying: 1976-01-01 ... January 1, 1976 Trying: 1977-01-01 ... January 1, 1977 Trying: 1978-01-01 ... January 1, 1978 Trying: 1979-01-01 ... January 1, 1979 Trying: 1980-01-01 ... January 1, 1980 Trying: 1981-01-01 ... January 1, 1981 Trying: 1982-01-01 ... January 1, 1982 Trying: 1983-01-01 ... January 1, 1983 Trying: 1984-01-01 ... January 1, 1984 Trying: 1985-01-01 ... January 1, 1985 Trying: 1986-01-01 ... January 1, 1986 Trying: 1987-01-01 ... January 1, 1987 Trying: 1988-01-01 ... January 1, 1988 Trying: 1989-01-01 ... January 1, 1989 Trying: 1990-01-01 ... January 1, 1990 Trying: 1991-01-01 ... January 1, 1991 Trying: 1992-01-01 ... January 1, 1992 Trying: 1993-01-01 ... January 1, 1993 Trying: 1994-01-01 ... January 1, 1994 Trying: 1995-01-01 ... January 1, 1995 Trying: 1996-01-01 ... January 1, 1996 Trying: 1997-01-01 ... January 1, 1997 Trying: 1998-01-01 ... January 1, 1998 Trying: 1999-01-01 ... January 1, 1999 Trying: 2000-01-01 ... January 1, 2000 Trying: 2001-01-01 ... January 1, 2001 Trying: 2002-01-01 ... January 1, 2002 Trying: 2003-01-01 ... January 1, 2003 Trying: 2004-01-01 ... January 1, 2004 Trying: 2005-01-01 ... January 1, 2005 Trying: 2006-01-01 ... January 1, 2006 Trying: 2007-01-01 ... January 1, 2007 Trying: 2008-01-01 ... January 1, 2008 Trying: 2009-01-01 ... January 1, 2009 Trying: 2010-01-01 ... January 1, 2010 Trying: 2011-01-01 ... January 1, 2011 Trying: 2012-01-01 ... January 1, 2012 Trying: 2013-01-01 ... January 1, 2013 Trying: 2014-01-01 ... January 1, 2014 Trying: 2015-01-01 ... January 1, 2015 Trying: 2016-01-01 ... January 1, 2016 Trying: 2017-01-01 ... January 1, 2017 Trying: 2018-01-01 ... January 1, 2018 Trying: 2019-01-01 ... January 1, 2019 Trying: 2020-01-01 ... January 1, 2020 Trying: 2021-01-01 ... January 1, 2021 Trying: 2022-01-01 ... January 1, 2022 Trying: 2023-01-01 ... January 1, 2023 Trying: 2024-01-01 ... January 1, 2024 Trying: 2025-01-01 ... January 1, 2025 Trying: 2026-01-01 ... January 1, 2026 Trying: 2027-01-01 ... January 1, 2027 Trying: 2028-01-01 ... January 1, 2028 Trying: 2029-01-01 ... January 1, 2029 Trying: 2030-01-01 ... January 1, 2030 Trying: 2031-01-01 ... January 1, 2031 Trying: 2032-01-01 ... January 1, 2032 Trying: 2033-01-01 ... January 1, 2033 Trying: 2034-01-01 ... January 1, 2034 Trying: 2035-01-01 ... January 1, 2035 Trying: 2036-01-01 ... January 1, 2036 Trying: 2037-01-01 ... January 1, 2037 Trying: 2038-01-01 ... January 1, 2038 Trying: 2039-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2040-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2041-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2042-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2043-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2044-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2045-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2046-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2047-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2048-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 Trying: 2049-01-01 ... Warning: unexpected error in date() in d:\fhirsch\mysite\testdate.php on line 6 ----- Original Message ----- From: Mike Robinson <mgrphp4@home.com> To: <hirschf@home.com>; <php-dev@lists.php.net> Sent: Tuesday, August 29, 2000 8:18 PM Subject: RE: [PHP-DEV] PHP 4.0 Bug #6425: date() parsing functionality provides unexpected results. > > > > -----Original Message----- > > From: hirschf@home.com [mailto:hirschf@home.com] > > Sent: Tuesday, August 29, 2000 7:58 PM > > To: php-dev@lists.php.net > > Subject: [PHP-DEV] PHP 4.0 Bug #6425: date() parsing functionality > > provides unexpected results. > > > $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; > > } > > You have a $ in front of the parseDate function call, and > an errant single quote to the right of $db_birth_date. > > On RHL6.2, the output of the -repaired- snippet is: > > September 13, 1969 > > Regards > .mike > > > > >

« previous php.dev (#32276) next »