7

我应该用 HTML5 微数据标记公司的营业时间。在 Google 和 schema.org 上搜索了一下后,我编写了以下代码:

<time itemprop="openingHours" datetime="Mo 13:00-17:30"><span class="day">Maandag:</span>   <span class="hours">13:00-17:30</span></time>
<time itemprop="openingHours" datetime="Tu 09:00-17:30"><span class="day">Dinsdag:</span>   <span class="hours">09:00-17:30</span></time>
<time itemprop="openingHours" datetime="We 09:00-17:30"><span class="day">Woensdag:</span>  <span class="hours">09:00-17:30</span></time>
<time itemprop="openingHours" datetime="Th 09:00-17:30"><span class="day">Donderdag:</span> <span class="hours">09:00-17:30</span></time>
<time itemprop="openingHours" datetime="Fr 09:00-21:00"><span class="day">Vrijdag:</span>   <span class="hours">09:00-21:00</span></time>
<time itemprop="openingHours" datetime="Sa 08:30-15:00"><span class="day">Zaterag:</span>   <span class="hours">08:30-15:00</span></time>

当我使用 Google 的结构化数据测试工具检查网站时,我发现结构化数据被正确识别。问题是这个作业的要求之一是它符合 W3C 的 HTML 验证器。对于每个时间元素,我收到以下错误。

Bad value Mo 13:00-17:30 for attribute datetime on element time: The literal did not satisfy the time-datetime format.

我明白为什么会出现此错误,但我不明白如何以 HTML5 微数据标记的方式指定我的营业时间,并且根据 HTML5 验证器它们也是有效的 HTML。

希望你们能帮我解决这个问题。:)

4

3 回答 3

6

W3C HTML Checker(又名验证器)的维护者在这里。我编写了执行该检查的代码。问题中的值Mo 13:00-17:30不符合 HTML 规范中给出的允许值的datetime规则。

该值Mo 13:00-17:30似乎试图指定一个特殊的时间范围:一周中的一天加上一个时间范围。

但是 HTML 规范不允许该值采用该格式。它允许的最接近的格式是 ISO8601 格式的持续时间字符串

一个有效的持续时间字符串:datetime="4h 30m"

这几乎是你所能得到的,因为在 HTML 规范中,指定持续时间的规则是它必须是小时+分钟+秒数的单个表达式。所以:

  • 指定一对时间(如问题所示)的持续时间表达式无效
  • 作为指定一周中某一天的持续时间的表达式无效
于 2015-09-12T13:55:17.243 回答
2

我使用data而不是time- 适用validator.w3.orgwww.google.com/webmasters/tools/richsnippets<data itemprop="openingHours" value="Mo-Su 07:00-22:00">7 days a week, 7 am to 22 pm</data> 感谢 Freenode#whatwg 上的 Hixie。

于 2014-09-11T23:35:25.907 回答
1

如果datetime格式导致验证失败,您可以将操作时间放在meta标记元素中:

  <meta itemprop="openingHours" content="Mo,Tu 11..." />
  <meta itemprop="openingHours" content="We,Th 12..." />
  ...

根据规范,如果该元素具有该属性,则该meta元素将在那里有效。itemprop

于 2016-01-02T22:20:20.827 回答