4.4 指定时间
可以通过time
元素标记一个准确的时间或日期,这是HTML5新增的元素。(关于日期体系的详细说明,参见本节末尾“理解datetime
格式”。)
time
最常见的一种用法是表示article
元素的发布日期。要表示发布日期,需要包含pubdate
属性。包含pubdate
属性的time
元素表示其最近的祖先article
元素的发布日期(参见图4.4.1)。还可以用time
、datetime
和pubdate
为article
的读者评论添加时间戳(假定与article
相关的评论都由嵌套在这个article
中的article
元素包着;参见3.9节“如何在article
和section
中作出选择”中的例2)。
在使用time
元素时,可以用多种方式表示时间(参见图4.4.1和图4.4.3)。time
中可选的文本内容(即文本
)会出现在屏幕上,作为可选的、机器可读的
datetime
值的人工可读版本(参见图4.4.2和图4.4.4)。
- ...
- <body>
- <article>
- <header>
- <h1>Cheetah and Gazelle Make Fast Friends</h1>
- <p><time datetime="2011-10-15" pubdate="pubdate">October 15, 2011</time></p>
- </header>
- ... [文章内容] ...
- </article>
- </body>
- </html>
图4.4.1 datetime
属性和time
元素中的文本最好反映相同的日期,但它们在书写方式上可以不一样(更多例子见图4.4.3)。这个time
元素代表文章发布的日期,因为它包含了pubdate
属性
图4.4.2 article
的发布日期出现在标题下面。显示出来的是time
元素的文本内容,而不是datetime
值
指定准确时间和日期
输入
开始
time
元素。如果需要,输入
datetime="time"
,其中time
应使用合法的格式(参见本节末尾“理解datetime
格式”)。如果这个时间代表的是
article
或整个页面的发布日期,则输入pubdate="pubdate"
或pubdate
。输入
>
结束这个开始标记。如果要让时间显示在浏览器中,则输入反映时间或日期的文本(关于允许的格式,参见第一条提示)。
6.输入。
提示 如果忽略
datetime
属性,文本内容就必须是合法的日期或时间格式。也就是说,图4.4.3第一个例子不能写成and
The train arrives at
on .
。如果包含了datetime
,文本内容就可以按你希望的任何形式表示日期或时间了,就像图4.4.3中第二个和第三个例子那样。
提示 不要在
time
中使用不准确的日期或时间,如“20世纪中期”、“午夜过后”、“文艺复兴后期”或“上周早些时候”。
提示 如果要在页面中显示
time
元素,应该在该元素中包含时间和日期的文本版本。如果没有包含,浏览器理应根据datetime
值显示对应的文本,但在本书写作之际,浏览器对这一特性的支持程度还很低,参见图4.4.4。
- ...
- <body>
- <p>The train arrives at <time>08:45</time> and <time>16:20</time>.b> on <time>2012-04-10</time>.</p>
- <p>We began our descent from the peak of Everest on <time datetime="1952-06-12T11: 05:00">June 12, 1952 at 11:05 a.m. </time></p>
- <p>They made their dinner reservation for <time datetime="2011-09-20T18: 30:00">tonight at 6:30</time>.</p>
- <p>The record release party is on <time datetime="2011-12-09"></time>.</p>
- </body>
- </html>
图4.4.3 使用time元素有多种方式。最简单的形式(第一个例子)没有datetime
属性。忽略datetime
属性时,必须使用合法的格式表示日期和时间。头三个例子在time
元素里都包含了时间或日期的文本,这些文字会显示在屏幕上(参见图4.4.4)。建议始终包含这种人类可读的时间,因为当前的浏览器不会显示属性中的值(参见图4.4.2)
提示 如果使用带
pubdate
的time
元素指示article
的发布日期,通常将它放置在这个article
的header
或footer
元素里,尽管这不是必需的。不管怎样,一定要把它嵌套在相关的article
里面的某个位置。
图4.4.4 头三个段落会显示时间,最后一个不会(参见最后一条提示)
提示 如果带
pubdate
属性的time
元素的祖先中没有article
元素,则代表整个页面的发布时间。
提示 既可以用
,也可以用
指定
pubdate
。不过,一旦包含它,就必须提供datetime
或时间的文本内容(参见图4.4.1)。
提示
datetime
属性的机器可读格式(参见本节末尾“理解datetime
格式”)使Web应用之间可以同步日期和时间。不过在本书写作之际,还没有浏览器会显示datetime
值(参见图4.4.2和图4.4.4)。
提示 不能在
time
元素中嵌套另一个time
元素。
理解
datetime
格式
time
元素的时间是以24小时制为基础的,也可以通过相对UTC(Coordinated Universal Time,全球标准时间)时差的方式来表示。datetime
属性应提供机器可读的日期和时间格式,其简化形式为:
- YYYY-MM-DDThh:mm:ss
例如(当地时间):
- 2011-11-03T17:19:10
表示“当地时间2011年11月3日下午5时19分10秒”。
T
用于将日期(YYYY-MM-DD
)和时间(hh:mm:ss
)隔开。如果包含时间,秒是可选的。也可以使用hh:mm.sss
格式提供时间的毫秒数。注意毫秒数之前的符号是一个点。如果你愿意,也可以表示为世界时。在末尾加上字母
Z
,就成了UTC。例如(世界时):
- 2011-11-03T17:19:10Z
也可以通过相对UTC时差的方式表示时间。这时不写字母
Z
,写上–
(减)或+
(加)及时差即可。例如(含相对UTC时差的世界时):
- 2011-11-03T17:19:10-03:30
表示“纽芬兰标准时(比UTC晚3个半小时)2011年11月3日下午5时19分10秒”。UTC时区列表参见http://en.wikipedia.org/wiki/List_of_time_zones_by_UTC_offset。
如果确实要包含
datetime
,也不必像图4.4.3中的示例那样提供时间的完整信息。从技术上来说,time
元素中的日期是以公历为基础的(公历是当前广泛使用的国际公认的日历体系)。因此,HTML5不推荐使用该元素表示现行公历开始使用之前的日期(一般情况下这不会给你的内容带来影响,你只需要知道这一点就行了)。有很多关于这种限制的讨论,但这是一个复杂的主题。更多信息和实例参见http://dev.w3.org/html5/spec-author-view/the-time-element.html;关于其中一些问题的详细说明,参见www.quirksmode.org/blog/archives/2009/04/making_time_saf.html。