Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > Which should be the correct date format for Date.parse ?

Reply
Thread Tools

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

 
 
Matteo
Guest
Posts: n/a
 
      06-15-2004
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
 
Reply With Quote
 
 
 
 
Evertjan.
Guest
Posts: n/a
 
      06-15-2004
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)
 
Reply With Quote
 
 
 
 
Matteo
Guest
Posts: n/a
 
      06-15-2004
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
 
Reply With Quote
 
Thomas 'PointedEars' Lahn
Guest
Posts: n/a
 
      06-15-2004
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
 
Reply With Quote
 
Dr John Stockton
Guest
Posts: n/a
 
      06-15-2004
JRS: In article <cana10$90j$(E-Mail Removed)>, seen in
news:comp.lang.javascript, Matteo <(E-Mail Removed)>
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.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
ASP.Net not showing Correct System Short Date format ? Luqman ASP .Net 3 07-03-2007 05:34 AM
Date, date date date.... Peter Grison Java 10 05-30-2004 01:20 PM
Date Format - best way of converting a string into a date format Brian Candy ASP .Net 2 02-18-2004 02:13 PM
Given a date, how to find the beginning date and ending date of that week Matt ASP .Net 1 11-08-2003 09:14 PM
how to set correct date format Himanshu Dora ASP General 3 09-23-2003 06:22 AM



Advertisments