Re: Dates in HTML 5

2007/6/27, Rob Marshall:
>
> I don't think it's safe to change document.lastModified, but I agree
> it's a terrible format. If it's still useful, perhaps a new attribute
> could be added that returns the last modified date as a DOMTimeStamp?

On the other hand, Opera 9 does not follow the format described in the spec.

Using the following document:
<!DOCTYPE html>
<title>Tests around the dates</title>
<script>var d = new Date();</script>
<dt>document.lastModified
<dd><script>document.write(typeof(document.lastModified))</script>
<dd><script>document.write(document.lastModified)</script>
<dd><script>document.write(new Date(document.lastModified).toString())</script>
<dt>toString
<dd><script>document.write(d.toString())</script>
<dt>toUTCString
<dd><script>document.write(d.toUTCString())</script>
<dt>toLocaleString
<dd><script>document.write(d.toLocaleString())</script>

You can test it here:
http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E%0A%3Ctitle%3ETests%20around%20the%20dates%3C/title%3E%0A%3Cscript%3Evar%20d%20%3D%20new%20Date%28%29%3B%3C/script%3E%0A%3Cdt%3Edocument.lastModified%0A%3Cdd%3E%3Cscript%3Edocument.write%28typeof%28document.lastModified%29%29%3C/script%3E%0A%3Cdd%3E%3Cscript%3Edocument.write%28document.lastModified%29%3C/script%3E%0A%3Cdd%3E%3Cscript%3Edocument.write%28new%20Date%28document.lastModified%29.toString%28%29%29%3C/script%3E%0A%3Cdt%3EtoString%0A%3Cdd%3E%3Cscript%3Edocument.write%28d.toString%28%29%29%3C/script%3E%0A%3Cdt%3EtoUTCString%0A%3Cdd%3E%3Cscript%3Edocument.write%28d.toUTCString%28%29%29%3C/script%3E%0A%3Cdt%3EtoLocaleString%0A%3Cdd%3E%3Cscript%3Edocument.write%28d.toLocaleString%28%29%29%3C/script%3E

Firefox displays:
document.lastModified
    string
    01/01/1970 00:00:00
toString
    Thu Jun 28 2007 20:13:57 GMT+0200
toUTCString
    Thu, 28 Jun 2007 18:13:57 GMT
toLocaleString
    jeudi 28 juin 2007 20:13:57

IE7:
document.lastModified
    string
    06/28/2007 20:14:15
toString
    Thu Jun 28 20:14:15 UTC+0200 2007
toUTCString
    Thu, 28 Jun 2007 18:14:15 UTC
toLocaleString
    jeudi 28 juin 2007 20:14:15

Opera 9 (9.21):
document.lastModified
    string
    January 1, 1970 GMT
toString
    Thu, 28 Jun 2007 20:19:42 GMT+0200
toUTCString
    Thu, 28 Jun 2007 18:19:42 GMT
toLocaleString
    28/06/2007 20:19:42

In brief:
 * Opera doesn't format document.lastModified as described in the spec today
 * the implementations of toString, toUTCString and toLocaleString are
all different

But most important: they're all capable of parsing their
document.lastModified into Date objects.



So how about:
 * changing document.lastModified to a Date (or DOMTimeStamp)
 * requiring that in ECMAScript bindings, toString() uses the
"MM/dd/yyyy HH:mm:ss" format (I know ECMAScript says the format is
implementation-dependent, but why couldn't we enforce it when used in
HTML?)

That way, document.write(document.lastModified) would yield the same
result in existing pages. And pages that use  "new
Date(document.lastModified)" or "Date.parse(document.lastModified)"
also still work: this is enforced by ECMAScript. In other words, it
shouldn't break much things

-- 
Thomas Broyer

Received on Thursday, 28 June 2007 18:36:45 UTC