Re: PHP 4.0 Bug #6425 Updated: date() parsing functionality provides unexpected results.
| From: | Fred Hirsch | 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
>
>
>
>
>