HTML Standard Tracker

Filter

File a bug

SVNBugCommentTime (UTC)
6845[Authors] [Conformance Checkers] [Gecko] [Internet Explorer] [Opera] [Webkit] [Tools] Update the date-and-time microsyntaxes to support having the 'T' replaced by a single space. (Note: multiple spaces are invalid and will cause parse failures. Only a single space is supported.) Based on proposal and implementation evidence from Tantek documented at http://wiki.whatwg.org/wiki/Time_element#permit_space_instead_of_T_in_datetimes2011-12-06 23:00
@@ -5264,25 +5264,39 @@ is conforming depends on which specs apply, and leaves it at that. -->
   year, a month, and a day, and a time, consisting of an hour, a
   minute, a second, and a fraction of a second, but expressed without
   a time zone. <a href="#refsGREGORIAN">[GREGORIAN]</a></p>
 
   <p>A string is a <dfn>valid local date and time string</dfn>
   representing a date and time if it consists of the following
   components in the given order:</p>
 
   <ol>
 
-   <li>A <span>valid date string</span> representing the date.</li>
+   <li>A <span>valid date string</span> representing the date</li>
+
+   <li>A U+0054 LATIN CAPITAL LETTER T character (T) or a U+0020 SPACE character</li>
+
+   <li>A <span>valid time string</span> representing the time</li>
+
+  </ol>
+
+  <p>A string is a <dfn>valid normalized local date and time
+  string</dfn> representing a date and time if it consists of the
+  following components in the given order:</p>
 
-   <li>A U+0054 LATIN CAPITAL LETTER T character (T).</li>
+  <ol>
+
+   <li>A <span>valid date string</span> representing the date</li>
 
-   <li>A <span>valid time string</span> representing the time.</li>
+   <li>A U+0054 LATIN CAPITAL LETTER T character (T)</li>
+
+   <li>A <span>valid time string</span> representing the time, expressed as the shortest possible string for the given time (e.g. omitting the seconds component entirely if the given time is zero seconds past the minute)</li>
 
   </ol>
 
   <div class="impl">
 
   <p>The rules to <dfn>parse a local date and time string</dfn> are as
   follows. This will return either a date and time, or nothing. If at
   any point the algorithm says that it "fails", this means that it is
   aborted at that point and returns nothing.</p>
 
@@ -5294,23 +5308,23 @@ is conforming depends on which specs apply, and leaves it at that. -->
    <li><p>Let <var title="">position</var> be a pointer into <var
    title="">input</var>, initially pointing at the start of the
    string.</p></li>
 
    <li><p><span>Parse a date component</span> to obtain <var
    title="">year</var>, <var title="">month</var>, and <var
    title="">day</var>. If this returns nothing, then fail.</p>
 
    <li><p>If <var title="">position</var> is beyond the end of <var
    title="">input</var> or if the character at <var
-   title="">position</var> is not a U+0054 LATIN CAPITAL LETTER T
-   character (T) then fail. Otherwise, move <var
-   title="">position</var> forwards one character.</p></li>
+   title="">position</var> is neither a U+0054 LATIN CAPITAL LETTER T
+   character (T) nor a U+0020 SPACE character, then fail. Otherwise,
+   move <var title="">position</var> forwards one character.</p></li>
 
    <li><p><span>Parse a time component</span> to obtain <var
    title="">hour</var>, <var title="">minute</var>, and <var
    title="">second</var>. If this returns nothing, then fail.</p>
 
    <li><p>If <var title="">position</var> is <em>not</em> beyond the
    end of <var title="">input</var>, then fail.</p></li>
 
    <li><p>Let <var title="">date</var> be the date with year <var
    title="">year</var>, month <var title="">month</var>, and day <var
@@ -5545,21 +5559,21 @@ is conforming depends on which specs apply, and leaves it at that. -->
   minutes. <a href="#refsGREGORIAN">[GREGORIAN]</a></p>
 
   <p>A string is a <dfn>valid global date and time string</dfn>
   representing a date, time, and a time-zone offset if it consists of
   the following components in the given order:</p>
 
   <ol>
 
    <li>A <span>valid date string</span> representing the date</li>
 
-   <li>A U+0054 LATIN CAPITAL LETTER T character (T)</li>
+   <li>A U+0054 LATIN CAPITAL LETTER T character (T) or a U+0020 SPACE character</li>
 
    <li>A <span>valid time string</span> representing the time</li>
 
    <li>A <span>valid time-zone offset string</span> representing the time-zone offset</li>
 
   </ol>
 
   <p>Times in dates before the formation of UTC in the mid twentieth
   century must be expressed and interpreted in terms of UT1
   (contemporary Earth solar time at the 0&deg; longitude), not UTC
@@ -5570,21 +5584,21 @@ is conforming depends on which specs apply, and leaves it at that. -->
   at the location of Greenwich, London.</p>
 
   <div class="example">
 
    <p>The following are some examples of dates written as <span
    title="valid global date and time string">valid global date and
    time strings</span>.</p>
 
    <dl>
 
-    <dt>"<code>0037-12-13T00:00Z</code>"</dt>
+    <dt>"<code>0037-12-13 00:00Z</code>"</dt>
 
     <dd>Midnight in areas using London time on the birthday of Nero
     (the Roman Emperor). See below for further discussion on which
     date this actually corresponds to.</dd>
 
     <dt>"<code>1979-10-14T12:00:00.001-04:00</code>"</dt>
 
     <dd>One millisecond after noon on October 14th 1979, in the time
     zone in use on the east coast of the USA during daylight saving
     time.</dd>
@@ -5598,20 +5612,25 @@ is conforming depends on which specs apply, and leaves it at that. -->
 
    </dl>
 
    <p>Several things are notable about these dates:</p>
 
    <ul>
 
     <li>Years with fewer than four digits have to be
     zero-padded. The date "37-12-13" would not be a valid date.</li>
 
+    <li>If the "<code title="">T</code>" is replaced by a space, it
+    must be a single space character. The string "<code
+    title="">2001-12-21&nbsp;&nbsp;12:00Z</code>" (with two spaces
+    between the components) would not be parsed successfully.</li>
+
     <li>To unambiguously identify a moment in time prior to the
     introduction of the Gregorian calendar (insofar as moments in time
     before the formation of UTC can be unambiguously identified), the
     date has to be first converted to the Gregorian calendar from the
     calendar in use at the time (e.g. from the Julian calendar). The
     date of Nero's birth is the 15th of December 37, in the Julian
     Calendar, which is the 13th of December 37 in the proleptic
     Gregorian Calendar.</li> <!-- This might not be true. I can't find
     a reference that gives his birthday with an explicit statement
     about the calendar being used. However, it seems unlikely that it
@@ -5626,48 +5645,38 @@ is conforming depends on which specs apply, and leaves it at that. -->
     <li>Times of specific events in ancient times are, at best,
     approximations, since time was not well coordinated or measured
     until relatively recent decades.</li>
 
     <li>Time-zone offsets differ based on daylight savings time.</li>
 
    </ul>
 
   </div>
 
-  <p>A string is a <dfn>valid forced-UTC global date and time
+  <p>A string is a <dfn>valid normalized forced-UTC global date and time
   string</dfn> representing a date, time, and a time-zone offset if it
   consists of the following components in the given order:</p>
 
   <ol>
 
    <li>A <span>valid date string</span> representing the date converted to the UTC time zone</li>
 
    <li>A U+0054 LATIN CAPITAL LETTER T character (T)</li>
 
    <li>A <span>valid time string</span> representing the time converted to the UTC time zone and expressed as the shortest possible string for the given time (e.g. omitting the seconds component entirely if the given time is zero seconds past the minute)</li>
 
    <li>A U+005A LATIN CAPITAL LETTER Z character (Z)</li>
 
   </ol>
 
   <div class="impl">
 
-  <p>The <dfn>best representation of the global date and time
-  string</dfn> <var title="">datetime</var> is the <span>valid global
-  date and time string</span> representing <var
-  title="">datetime</var>, with the <span>valid time string</span>
-  component being given in its shortest possible form, with the last
-  character of the string not being a U+005A LATIN CAPITAL LETTER Z
-  character (Z), even if the time zone is UTC, and with a U+002B PLUS
-  SIGN character (+) representing the sign of the time-zone offset
-  when the time zone is UTC.</p>
-
   <p>The rules to <dfn>parse a global date and time string</dfn> are
   as follows. This will return either a time in UTC, with associated
   time-zone offset information for round-tripping or display purposes,
   or nothing. If at any point the algorithm says that it "fails", this
   means that it is aborted at that point and returns nothing.</p>
 
   <ol>
 
    <li><p>Let <var title="">input</var> be the string being
    parsed.</p></li>
@@ -5675,23 +5684,23 @@ is conforming depends on which specs apply, and leaves it at that. -->
    <li><p>Let <var title="">position</var> be a pointer into <var
    title="">input</var>, initially pointing at the start of the
    string.</p></li>
 
    <li><p><span>Parse a date component</span> to obtain <var
    title="">year</var>, <var title="">month</var>, and <var
    title="">day</var>. If this returns nothing, then fail.</p>
 
    <li><p>If <var title="">position</var> is beyond the end of <var
    title="">input</var> or if the character at <var
-   title="">position</var> is not a U+0054 LATIN CAPITAL LETTER T
-   character (T) then fail. Otherwise, move <var
-   title="">position</var> forwards one character.</p></li>
+   title="">position</var> is neither a U+0054 LATIN CAPITAL LETTER T
+   character (T) nor a U+0020 SPACE character, then fail. Otherwise,
+   move <var title="">position</var> forwards one character.</p></li>
 
    <li><p><span>Parse a time component</span> to obtain <var
    title="">hour</var>, <var title="">minute</var>, and <var
    title="">second</var>. If this returns nothing, then fail.</p>
 
    <li><p>If <var title="">position</var> is beyond the end of <var
    title="">input</var>, then fail.</p></li>
 
    <li><p><span>Parse a time-zone offset component</span> to obtain
    <var title="">timezone<sub title="">hours</sub></var> and <var
@@ -6319,23 +6328,23 @@ is conforming depends on which specs apply, and leaves it at that. -->
   </div>
 
 
   <h5>Vaguer moments in time</h5>
 
   <p>A string is a <dfn>valid date string with optional time</dfn> if
   it is also one of the following:</p>
 
   <ul>
 
-   <li>A <span>valid date string</span>.</li>
+   <li>A <span>valid date string</span></li>
 
-   <li>A <span>valid global date and time string</span>.</li>
+   <li>A <span>valid global date and time string</span></li>
 
   </ul>
 
   <div class="impl">
 
   <hr>
 
   <p>The rules to <dfn>parse a date or time string</dfn> are as
   follows. The algorithm will return either a <span
   title="concept-date">date</span>, a <span
@@ -6362,30 +6371,31 @@ is conforming depends on which specs apply, and leaves it at that. -->
    <li><p><span>Parse a date component</span> to obtain <var
    title="">year</var>, <var title="">month</var>, and <var
    title="">day</var>. If this fails, then set the <var title="">date
    present</var> flag to false.</p>
 
    <li>
 
     <p>If <var title="">date present</var> is true, and <var
     title="">position</var> is not beyond the end of <var
     title="">input</var>, and the character at <var
-    title="">position</var> is a U+0054 LATIN CAPITAL LETTER T
-    character (T), then advance <var title="">position</var> to the
-    next character in <var title="">input</var>.</p>
+    title="">position</var> is either a U+0054 LATIN CAPITAL LETTER T
+    character (T) or a U+0020 SPACE character, then advance <var
+    title="">position</var> to the next character in <var
+    title="">input</var>.</p>
 
     <p>Otherwise, if <var title="">date present</var> is true, and
     either <var title="">position</var> is beyond the end of <var
     title="">input</var> or the character at <var
-    title="">position</var> is not a U+0054 LATIN CAPITAL LETTER T
-    character (T), then set <var title="">time present</var> to
-    false.</p>
+    title="">position</var> is neither a U+0054 LATIN CAPITAL LETTER T
+    character (T) nor a U+0020 SPACE character, then set <var
+    title="">time present</var> to false.</p>
 
     <p>Otherwise, if <var title="">date present</var> is false, set
     <var title="">position</var> back to the same position as <var
     title="">start position</var>.</p>
 
    </li>
 
    <li><p>If the <var title="">time present</var> flag is true, then
    <span>parse a time component</span> to obtain <var
    title="">hour</var>, <var title="">minute</var>, and <var
@@ -22707,20 +22717,23 @@ this specification: the &lt;abbr>WHATWG&lt;/abbr> and the
    </dd>
 
 
    <dt>A <span>valid local date and time string</span></dt>
 
    <dd>
 
     <pre class="example">&lt;time>2011-11-12T14:54&lt;/time></pre>
     <pre class="example">&lt;time>2011-11-12T14:54:39&lt;/time></pre>
     <pre class="example">&lt;time>2011-11-12T14:54:39.92922&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39.92922&lt;/time></pre>
 
    </dd>
 
 
    <dt>A <span>valid time-zone offset string</span></dt>
 
    <dd>
 
     <pre class="example">&lt;time>Z&lt;/time></pre>
     <pre class="example">&lt;time>+0000&lt;/time></pre>
@@ -22748,20 +22761,40 @@ this specification: the &lt;abbr>WHATWG&lt;/abbr> and the
     <pre class="example">&lt;time>2011-11-12T14:54:39.92922+00:00&lt;/time></pre>
 
     <pre class="example">&lt;time>2011-11-12T06:54-0800&lt;/time></pre>
     <pre class="example">&lt;time>2011-11-12T06:54:39-0800&lt;/time></pre>
     <pre class="example">&lt;time>2011-11-12T06:54:39.92922-0800&lt;/time></pre>
 
     <pre class="example">&lt;time>2011-11-12T06:54-08:00&lt;/time></pre>
     <pre class="example">&lt;time>2011-11-12T06:54:39-08:00&lt;/time></pre>
     <pre class="example">&lt;time>2011-11-12T06:54:39.92922-08:00&lt;/time></pre>
 
+    <pre class="example">&lt;time>2011-11-12 14:54Z&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39Z&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39.92922Z&lt;/time></pre>
+
+    <pre class="example">&lt;time>2011-11-12 14:54+0000&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39+0000&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39.92922+0000&lt;/time></pre> 
+
+    <pre class="example">&lt;time>2011-11-12 14:54+00:00&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39+00:00&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 14:54:39.92922+00:00&lt;/time></pre>
+
+    <pre class="example">&lt;time>2011-11-12 06:54-0800&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 06:54:39-0800&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 06:54:39.92922-0800&lt;/time></pre>
+
+    <pre class="example">&lt;time>2011-11-12 06:54-08:00&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 06:54:39-08:00&lt;/time></pre>
+    <pre class="example">&lt;time>2011-11-12 06:54:39.92922-08:00&lt;/time></pre>
+
    </dd>
 
 
    <dt>A <span>valid week string</span></dt>
 
    <dd>
 
     <pre class="example">&lt;time>2011-W46&lt;/time></pre>
 
    </dd>
@@ -24294,40 +24327,40 @@ Course course = Helm.CourseFactory(Heading, &lt;wbr>Maps.MapFactoryFromHeading(h
 
   <div class="example">
 
    <p>The following example represents the addition of two paragraphs,
    the second of which was inserted in two parts. The first
    <code>ins</code> element in this example thus crosses a paragraph
    boundary, which is considered poor form.</p>
 
    <pre class="bad">&lt;aside>
  &lt;!-- don't do this -->
- &lt;ins datetime="2005-03-16T00:00Z">
+ &lt;ins datetime="2005-03-16 00:00Z">
   &lt;p> I like fruit. &lt;/p>
   Apples are &lt;em>tasty&lt;/em>.
  &lt;/ins>
- &lt;ins datetime="2007-12-19T00:00Z">
+ &lt;ins datetime="2007-12-19 00:00Z">
   So are pears.
  &lt;/ins>
 &lt;/aside></pre>
 
    <p>Here is a better way of marking this up. It uses more elements,
    but none of the elements cross implied paragraph boundaries.</p>
 
    <pre>&lt;aside>
- &lt;ins datetime="2005-03-16T00:00Z">
+ &lt;ins datetime="2005-03-16 00:00Z">
   &lt;p> I like fruit. &lt;/p>
  &lt;/ins>
- &lt;ins datetime="2005-03-16T00:00Z">
+ &lt;ins datetime="2005-03-16 00:00Z">
   Apples are &lt;em>tasty&lt;/em>.
  &lt;/ins>
- &lt;ins datetime="2007-12-19T00:00Z">
+ &lt;ins datetime="2007-12-19 00:00Z">
   So are pears.
  &lt;/ins>
 &lt;/aside></pre>
 
    <!-- Those dates aren't random. They're the start and end of
    something. Can you guess what? -->
 
   </div>
 
 
@@ -24582,25 +24615,25 @@ Course course = Helm.CourseFactory(Heading, &lt;wbr>Maps.MapFactoryFromHeading(h
  &lt;tbody>
   &lt;tr> &lt;td> Diablo 2            &lt;td> Blizzard         &lt;td> 8/10
   &lt;tr> &lt;td> Portal              &lt;td> Valve            &lt;td> 10/10
 <strong>  &lt;tr> &lt;td> &lt;ins>Portal 2&lt;/ins> &lt;td> &lt;ins>Valve&lt;/ins> &lt;td> &lt;ins>10/10&lt;/ins></strong>
 &lt;/table></pre>
 
    <p>Here, a column has been removed (the time at which it was removed is given also, as is a link to the page explaining why):</p>
 
    <pre>&lt;table>
  &lt;thead>
-  &lt;tr> &lt;th> Game name           &lt;th> Game publisher   &lt;th> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02T14:23Z">Verdict&lt;/del></strong>
+  &lt;tr> &lt;th> Game name           &lt;th> Game publisher   &lt;th> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02 14:23Z">Verdict&lt;/del></strong>
  &lt;tbody>
-  &lt;tr> &lt;td> Diablo 2            &lt;td> Blizzard         &lt;td> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02T14:23Z">8/10&lt;/del></strong>
-  &lt;tr> &lt;td> Portal              &lt;td> Valve            &lt;td> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02T14:23Z">10/10&lt;/del></strong>
-  &lt;tr> &lt;td> Portal 2            &lt;td> Valve            &lt;td> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02T14:23Z">10/10&lt;/del></strong>
+  &lt;tr> &lt;td> Diablo 2            &lt;td> Blizzard         &lt;td> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02 14:23Z">8/10&lt;/del></strong>
+  &lt;tr> &lt;td> Portal              &lt;td> Valve            &lt;td> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02 14:23Z">10/10&lt;/del></strong>
+  &lt;tr> &lt;td> Portal 2            &lt;td> Valve            &lt;td> <strong>&lt;del cite="/edits/r192" datetime="2011-05-02 14:23Z">10/10&lt;/del></strong>
 &lt;/table></pre>
 
   </div>
 
   <p>Generally speaking, there is no good way to indicate more
   complicated edits (e.g. that a cell was removed, moving all
   subsequent cells up or to the left).</p>
 
 
 
@@ -51605,29 +51638,29 @@ interface <dfn>HTMLFormElement</dfn> : <span>HTMLElement</span> {
 
   <div class="impl">
 
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-datetime">global date and time</span> represented by
   its <span title="concept-fe-value">value</span>, as obtained by
   <span title="parse a global date and time string">parsing a global
   date and time</span> from it. User agents must not allow the user to
   set the <span title="concept-fe-value">value</span> to a non-empty
-  string that is not a <span>valid forced-UTC global date and time
+  string that is not a <span>valid normalized forced-UTC global date and time
   string</span>, though user agents may allow the user to set and view
   the time in another time zone and silently translate the time to and
   from the UTC time zone in the <span
   title="concept-fe-value">value</span>. If the user agent provides a
   user interface for selecting a <span title="concept-datetime">global
   date and time</span>, then the <span
   title="concept-fe-value">value</span> must be set to a <span>valid
-  forced-UTC global date and time string</span> representing the
+  normalized forced-UTC global date and time string</span> representing the
   user's selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
 
   </div>
 
   <p class="note">The format shown to the user is independent of the
   format used for form submission. Browsers are encouraged to use user
   interfaces that present dates and times according to the conventions
   of the user's preferred locale.</p>
 
@@ -51637,23 +51670,23 @@ interface <dfn>HTMLFormElement</dfn> : <span>HTMLElement</span> {
   value, we never know when we might have to represent bogus input;
   also ok to be non-UTC, we convert it -->
 
   <div class="impl">
 
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows</strong>: If the <span title="concept-fe-value">value</span>
   of the element is a <span>valid global date and time string</span>,
   then adjust the time so that the <span
   title="concept-fe-value">value</span> represents the same point in
-  time but expressed in the UTC time zone as a <span>valid forced-UTC
-  global date and time string</span>, otherwise, set it to the empty
-  string instead.</p>
+  time but expressed in the UTC time zone as a <span>valid normalized
+  forced-UTC global date and time string</span>, otherwise, set it to
+  the empty string instead.</p>
 
   </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid global date and
   time string</span>. The <code title="attr-input-max">max</code>
   attribute, if specified, must have a value that is a <span>valid
   global date and time string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
@@ -51681,43 +51714,43 @@ interface <dfn>HTMLFormElement</dfn> : <span>HTMLElement</span> {
   title="">input</var> results in an error, then return an error;
   otherwise, return the number of milliseconds elapsed from midnight
   UTC on the morning of 1970-01-01 (the time represented by the value
   "<code title="">1970-01-01T00:00:00.0Z</code>") to the parsed <span
   title="concept-datetime">global date and time</span>, ignoring leap
   seconds.</p>
 
   <p><strong>The <span
   title="concept-input-value-number-string">algorithm to convert a
   number to a string</span>, given a number <var title="">input</var>,
-  is as follows</strong>: Return a <span>valid global date and time
-  string</span> expressed in UTC that represents the <span
+  is as follows</strong>: Return a <span>valid normalized forced-UTC
+  global date and time string</span> that represents the <span
   title="concept-datetime">global date and time</span> that is <var
   title="">input</var> milliseconds after midnight UTC on the morning
   of 1970-01-01 (the time represented by the value "<code
   title="">1970-01-01T00:00:00.0Z</code>").</p>
 
   <p><strong>The <span
   title="concept-input-value-string-date">algorithm to convert a
   string to a <code>Date</code> object</span>, given a string <var
   title="">input</var>, is as follows</strong>: If <span title="parse
   a global date and time string">parsing a global date and time</span>
   from <var title="">input</var> results in an error, then return an
   error; otherwise, return a <code>Date</code> object representing the
   parsed <span title="concept-datetime">global date and time</span>,
   expressed in UTC.</p>
 
   <p><strong>The <span
   title="concept-input-value-date-string">algorithm to convert a
   <code>Date</code> object to a string</span>, given a
   <code>Date</code> object <var title="">input</var>, is as
-  follows</strong>: Return a <span>valid global date and time
-  string</span> expressed in UTC that represents the <span
+  follows</strong>: Return a <span>valid normalized forced-UTC global
+  date and time string</span> that represents the <span
   title="concept-datetime">global date and time</span> that is
   represented by <var title="">input</var>.</p>
 
   </div>
 
   <div class="note" id="only-contemporary-times">
 
    <p>The <span title="attr-input-type-datetime">Date and Time</span>
    state (and other date- and time-related states described in
    subsequent sections) is not intended for the entry of values for
@@ -52546,46 +52579,49 @@ interface <dfn>HTMLFormElement</dfn> : <span>HTMLElement</span> {
 
   <div class="impl">
 
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-datetime-local">date and time</span> represented by
   its <span title="concept-fe-value">value</span>, as obtained by
   <span title="parse a local date and time string">parsing a date and
   time</span> from it. User agents must not allow the user to set the
   <span title="concept-fe-value">value</span> to a non-empty string
-  that is not a <span>valid local date and time string</span>. If the
-  user agent provides a user interface for selecting a <span
-  title="concept-datetime-local">local date and time</span>, then the
-  <span title="concept-fe-value">value</span> must be set to a
-  <span>valid local date and time string</span> representing the
-  user's selection. User agents should allow the user to set the <span
+  that is not a <span>valid normalized local date and time
+  string</span>. If the user agent provides a user interface for
+  selecting a <span title="concept-datetime-local">local date and
+  time</span>, then the <span title="concept-fe-value">value</span>
+  must be set to a <span>valid normalized local date and time
+  string</span> representing the user's selection. User agents should
+  allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
 
   </div>
 
   <p class="note">The format shown to the user is independent of the
   format used for form submission. Browsers are encouraged to use user
   interfaces that present dates and times according to the conventions
   of the user's preferred locale.</p>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified and not empty, must have a value that is a <span>valid
   local date and time string</span>.</p> <!-- ok to set out-of-range
   value, we never know when we might have to represent bogus input -->
 
   <div class="impl">
 
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows</strong>: If the <span title="concept-fe-value">value</span>
-  of the element is not a <span>valid local date and time
-  string</span>, then set it to the empty string instead.</p>
+  of the element is a <span>valid local date and time string</span>,
+  then set it to a <span>valid normalized local date and time
+  string</span> representing the same date and time; otherwise, set it
+  to the empty string instead.</p>
 
   </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid local date and
   time string</span>. The <code title="attr-input-max">max</code>
   attribute, if specified, must have a value that is a <span>valid
   local date and time string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
@@ -52613,24 +52649,24 @@ interface <dfn>HTMLFormElement</dfn> : <span>HTMLElement</span> {
   title="">input</var> results in an error, then return an error;
   otherwise, return the number of milliseconds elapsed from midnight
   on the morning of 1970-01-01 (the time represented by the value
   "<code title="">1970-01-01T00:00:00.0</code>") to the parsed <span
   title="concept-datetime-local">local date and time</span>, ignoring
   leap seconds.</p>
 
   <p><strong>The <span
   title="concept-input-value-number-string">algorithm to convert a
   number to a string</span>, given a number <var title="">input</var>,
-  is as follows</strong>: Return a <span>valid local date and time
-  string</span> that represents the date and time that is <var
-  title="">input</var> milliseconds after midnight on the morning of
-  1970-01-01 (the time represented by the value "<code
+  is as follows</strong>: Return a <span>valid normalized local date
+  and time string</span> that represents the date and time that is
+  <var title="">input</var> milliseconds after midnight on the morning
+  of 1970-01-01 (the time represented by the value "<code
   title="">1970-01-01T00:00:00.0</code>").</p>
 
   </div>
 
   <p class="note">See <a href="#only-contemporary-times">the note on
   historical dates</a> in the <span
   title="attr-input-type-datetime">Date and Time</span> state
   section.</p>
 
   <div class="bookkeeping">
@@ -69263,22 +69299,22 @@ partial interface <span>HTMLElement</span> {
   &lt;/li>
   &lt;li>&lt;a itemprop="url" href="http://en.wikipedia.org/wiki/Jack_Bauer">I'm on Wikipedia&lt;/a>
   so you can leave a message on my user talk page.&lt;/li>
   &lt;li>&lt;a itemprop="url" href="http://www.jackbauerfacts.com/">Jack Bauer Facts&lt;/a>&lt;/li>
   &lt;li itemprop="email">&lt;a href="mailto:j.bauer@la.ctu.gov.invalid">j.bauer@la.ctu.gov.invalid&lt;/a>&lt;/li>
   &lt;li itemprop="tel" itemscope>
    &lt;span itemprop="value">+1 (310) 555 3781&lt;/span> &lt;span>
    &lt;meta itemprop="type" content="cell">mobile phone&lt;/span>
   &lt;/li>
  &lt;/ul>
- &lt;ins datetime="2008-07-20T21:00:00+01:00">
-  &lt;meta itemprop="rev" content="2008-07-20T21:00:00+01:00">
+ &lt;ins datetime="2008-07-20 21:00:00+01:00">
+  &lt;meta itemprop="rev" content="2008-07-20 21:00:00+01:00">
   &lt;p itemprop="tel" itemscope>&lt;strong>Update!&lt;/strong>
   My new &lt;span itemprop="type">home&lt;/span> phone number is
   &lt;span itemprop="value">01632 960 123&lt;/span>.&lt;/p>
  &lt;/ins>
 &lt;/section></pre>
 
    <p>The odd line wrapping is needed because newlines are meaningful
    in microdata: newlines would be preserved in a conversion to, for
    example, the vCard format.<p>
 

|