Which should be the correct date format for Date.parse ?

Discussion in 'Javascript' started by Matteo, Jun 15, 2004.

  1. Matteo

    Matteo Guest

    Hy everybody.

    I'm not a html writer, but a sysadmin who's trying to help a user able
    to compile an online form with IE but not with Mozilla (Moz1.6, Ns7.1,
    Firefox 0.8+) due to a javascript date check.

    Let's go straight to the point:

    <script language="JavaScript">
    alert("Date: "+Date.parse("2000-01-01"))
    // On IE and Mozilla: "Date: NaN"

    alert("Date: "+Date.parse("01-01-2000"))
    // On IE: "Date: 946681200000"
    // On Mozilla: "Date: NaN"

    alert("Date: "+Date.parse("01/01/2000"))
    alert("Date: "+Date.parse("2000/01/01"))
    // On IE and Mozilla: "Date: 946681200000"
    </script>

    This happens on italian win2000 and winxp, italian IE6, italian Moz1.6,
    english Ns7.1, english Firefox 0.8.0+.

    Obviously the solution is the third example, and I've yet mailed it to
    the webmaster, who is using the second format, 01-01-2000; but is it
    correct that in both Mozilla and IE Date.parse doesn't accept the
    iso8601 format 2000-01-01 or maybe is something of which mozilla
    developers should be aware? Or maybe the examples above are an improper
    use of Date.parse?

    I read the paragraph 15.9.4.2 of ecmascript 262 pdf, but it's not so
    clear about possible date formats; or maybe it refers to something that
    I cannot understand.


    Thank you.
    Matteo
    Matteo, Jun 15, 2004
    #1
    1. Advertising

  2. Matteo

    Evertjan. Guest

    Matteo wrote on 15 jun 2004 in comp.lang.javascript:
    > Obviously the solution is the third example, and I've yet mailed it to
    > the webmaster, who is using the second format, 01-01-2000;


    This format cannot be used, since it is regional settings dependent:

    01-07-2004 means 1st of juli in some pc's but 7th of january in others.

    Do not trust all Italian pc's to have been set "correctly".

    Do not test on 01-01-2000, since that date will be "correct" in both
    circumstances.

    --
    Evertjan.
    The Netherlands.
    (Please change the x'es to dots in my emailaddress)
    Evertjan., Jun 15, 2004
    #2
    1. Advertising

  3. Matteo

    Matteo Guest

    Evertjan. ha scritto:
    > Matteo wrote on 15 jun 2004 in comp.lang.javascript:
    >>Obviously the solution is the third example, and I've yet mailed it to
    >>the webmaster, who is using the second format, 01-01-2000;

    > This format cannot be used, since it is regional settings dependent:
    >
    > 01-07-2004 means 1st of juli in some pc's but 7th of january in others.
    >
    > Do not trust all Italian pc's to have been set "correctly".
    >
    > Do not test on 01-01-2000, since that date will be "correct" in both
    > circumstances.


    This is right; but I was wondering also why both IE and Mozilla accept
    AAAA/MM/DD and don't accept AAAA-MM-DD format, that is an iso standard;
    maybe Date.parse is intended to handle only long formats like '15 Jun
    2004 07:59:19 GMT', and supports other formats only for proprietary
    extension ?

    Anyway, mine is just an academic discussion about which date standard
    formats the browsers should and shouldn't accept for Date.parse;
    certainly the 01-01-2000 format is an ambiguous format and must not be
    used to calculate dates.

    Bye.
    Matteo
    Matteo, Jun 15, 2004
    #3
  4. Matteo schrieb:
    > [...] I was wondering also why both IE and Mozilla accept AAAA/MM/DD


    Downwards compatibility.

    > and don't accept AAAA-MM-DD format, that is an iso standard;


    It is still the wrong format:

    <http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/date.html#1193137>
    <http://msdn.microsoft.com/library/en-us/script56/html/js56jsobjdate.asp?frame=true>
    <http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthparse.asp?frame=true>

    > maybe Date.parse is intended to handle only long formats like '15 Jun
    > 2004 07:59:19 GMT',


    That may be the reason. AFAIS the ECMAScript 3 specification does
    not specify the date format that Date.parse() should accept, only
    ways how its argument can be interpreted.

    > and supports other formats only for proprietary extension ?


    Apparently.

    > Anyway, mine is just an academic discussion about which date standard
    > formats the browsers should and shouldn't accept for Date.parse; [...]


    Since date strings are always ambiguous, one should use

    new Date (year, month [, date [, hours [, minutes [, seconds [, ms ] ]
    ] ] ] )

    as clearly specified in ECMAScript 3, section 15.9.3.1, instead.


    PointedEars
    Thomas 'PointedEars' Lahn, Jun 15, 2004
    #4
  5. JRS: In article <cana10$90j$>, seen in
    news:comp.lang.javascript, Matteo <>
    posted at Tue, 15 Jun 2004 19:01:47 :
    >Evertjan. ha scritto:
    > > Matteo wrote on 15 jun 2004 in comp.lang.javascript:
    > >>Obviously the solution is the third example, and I've yet mailed it to
    > >>the webmaster, who is using the second format, 01-01-2000;

    > > This format cannot be used, since it is regional settings dependent:
    > >
    > > 01-07-2004 means 1st of juli in some pc's but 7th of january in others.
    > >
    > > Do not trust all Italian pc's to have been set "correctly".
    > >
    > > Do not test on 01-01-2000, since that date will be "correct" in both
    > > circumstances.

    >
    >This is right; but I was wondering also why both IE and Mozilla accept
    >AAAA/MM/DD and don't accept AAAA-MM-DD format, that is an iso standard;
    >maybe Date.parse is intended to handle only long formats like '15 Jun
    >2004 07:59:19 GMT', and supports other formats only for proprietary
    >extension ?


    Only an optimist expects software written in the USA to understand
    International Standards. They do not even understand the word
    "International"; they generally use it as near-synonymous with
    "Foreign". In truth, "International" means "the same world-wide
    (including, if possible, the USA)" and "Multi-National" is better for
    "customised, correctly or otherwise, for assumed location".


    >Anyway, mine is just an academic discussion about which date standard
    >formats the browsers should and shouldn't accept for Date.parse;
    >certainly the 01-01-2000 format is an ambiguous format and must not be
    >used to calculate dates.


    It should indeed never be used, except for the Nth day of the Nth month.
    I believe that the true ISO format, YYYY-MM-DD, should be used wherever
    practical; but in javascript using - as a separator is at best unsafe.
    I've "always" recommended and used YYYY/MM/DD in javascript, and have
    never been told of any problem with it.

    Actually, I think I never tried xx-xx-xxxx (knowing xxxx-xx-xx to fail);
    my MSIE4 takes it as MM-DD-YYYY, which is unacceptable.

    A parser should be liberal, but not to the point of accepting ambiguity.
    Ideally, it would accept only "YYYYxMMxDDyHHzMMzSS Zone" in which x y &
    z are any plausible separators; and there would be another form, or an
    optional extra parameter, for specifying the date field order.

    Your "946681200000" is of course when Year 2000 started in Italy.
    Canadians get a larger number.

    --
    © John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
    <URL:http://jibbering.com/faq/> JL / RC : FAQ for news:comp.lang.javascript
    <URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
    <URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
    Dr John Stockton, Jun 15, 2004
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Brian Candy
    Replies:
    2
    Views:
    1,157
    Janaka
    Feb 18, 2004
  2. Luqman
    Replies:
    3
    Views:
    5,900
    luqman
    Jul 3, 2007
  3. Ed
    Replies:
    6
    Views:
    1,270
    =?ISO-8859-1?Q?Arne_Vajh=F8j?=
    Aug 2, 2007
  4. Himanshu Dora

    how to set correct date format

    Himanshu Dora, Sep 22, 2003, in forum: ASP General
    Replies:
    3
    Views:
    120
    Bullschmidt
    Sep 23, 2003
  5. Josh Sharpe
    Replies:
    1
    Views:
    206
    Brian Candler
    Sep 21, 2010
Loading...

Share This Page