From:             [EMAIL PROTECTED]
Operating system: Windows 98
PHP version:      4.0.6
PHP Bug Type:     Unknown/Other Function
Bug description:  The date() function

PHP Authors,

My names are James Hitz, author of http://jamhitz.tripod.com a website that
provides free PHP tutorials.

I was creating a tutorial on user-defined functions and was working on one
that accepts a string containing a date format (eg. dd-mmm-yy) and outputs 
the date in the specified format.  The code is as follows:

<?php

  function printdate($subject){

        $search = array( 
                 "/[d]{4}/i",
                 "/[d]{3}/i",
                 "/[d]{2}/i",
                 "/[d]{1}/i",

                 "/[m]{4}/i",
                 "/[m]{3}/i",
                 "/[m]{2}/i",
                 "/[m]{1}/i",

                 "/[y]{3,4}/i",
                 "/[y]{1,2}/i" );

        $replace = array(
                date("l"),
                date("D"),
                date("d"),
                date("j"),

                date("F"),
                date("M"),
                date("m"),
                date("n"),

                date("Y"),
                date("y") );

        $newdate =   preg_replace($search,$replace, $subject);
 
        //return the formatted date
        return $newdate;
  }

?>

On my Win 98 (Second Edition) system running php version 4.06, I evoked the
following above functrion using  the following code snippet:

    print printdate("dddd ddd, dd d m mm mmm mmmm y yy yyy yyyy");

This produced the following output:

    Thurs12a01 Thu, 12 12 7 07 Jul Jul01 01 01 2001 2001

Aparrently, I expected this to have produced something like this:

    Thursday Thu, 12 12 7 07 Jul July 01 01 2001 2001

The parsing of the date() function seems not to act 'normal'.  The
documentation I have states as follows in regard to the date() function: 

<QUOTE>
    date
    (PHP 3, PHP 4 )

    date -- Format a local time/date
    Description

    string date (string format [, int timestamp])


    Returns a string formatted according to the given  
    format string using the given timestamp or the current 
    local time if no timestamp is given. 

    The following characters are recognized in the format
    string: 

    d - day of the month, 2 digits with leading zeros; i.e.
     "01" to "31" 

    D - day of the week, textual, 3 letters; i.e. "Fri" 

    F - month, textual, long; i.e. "January" 

    j - day of the month without leading zeros; i.e. "1"
        to "31" 

    l (lowercase 'L') - day of the week, textual, long;
       i.e. "Friday" 

    m - month; i.e. "01" to "12" 

    M - month, textual, 3 letters; i.e. "Jan" 

    n - month without leading zeros; i.e. "1" to "12" 

    r - RFC 822 formatted date; i.e. "Thu, 21 Dec 2000 16:01:07 +0200" 

    Y - year, 4 digits; i.e. "1999" 

    y - year, 2 digits; i.e. "99" 

    z - day of the year; i.e. "0" to "365" 

</QUOTE>

Is this a bug in the code or a bug in the documentation?  Seems to me like
one of those. Please advise. I am making a tutorial that will make use of
the above function and would appreciate if you would tell me what to tell
my audience.

The tutorials I am make are very good for all - even complete beginners, so
you can bundle them in your PHP distributions, or you can point users to
http://jamhitz.tripod.com.  All tutorials are free.

Thanking you.
James N. Hitz
[EMAIL PROTECTED]

-- 
Edit bug report at: http://bugs.php.net/?id=12161&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to