我计划使用<;时间>;php for循环中的标记-datetime的未知参数

我计划使用<;时间>;php for循环中的标记-datetime的未知参数,php,html,Php,Html,我有一个forloop,它将为我打印公告。我想使用时间标签,并已通过datetime属性访问。因为它在一个循环中,所以我不能使用特定的日期,也不想使用变量(出于英国格式的原因)。。。我的问题是,是否有一个不需要精确日期的说明符?比如 <time datetime="YYYY-MM-DD">February 17, 2012</time> 2012年2月17日 提前感谢,如果这是一个愚蠢的问题,请道歉。没有有效的方法将元素用于非特定日期或时间的内容。这将违背其定义 另一

我有一个forloop,它将为我打印公告。我想使用时间标签,并已通过datetime属性访问。因为它在一个循环中,所以我不能使用特定的日期,也不想使用变量(出于英国格式的原因)。。。我的问题是,是否有一个不需要精确日期的说明符?比如

<time datetime="YYYY-MM-DD">February 17, 2012</time>
2012年2月17日

提前感谢,如果这是一个愚蠢的问题,请道歉。

没有有效的方法将元素用于非特定日期或时间的内容。这将违背其定义


另一方面,浏览器或搜索引擎中对
time
元素没有已知的支持(除了浏览器只解析元素并将其插入DOM之外)。到目前为止,它实际上只是一个可以用JavaScript(或CSS样式)处理的元素。因此,当这个元素在原则上还不够时,可以使用其他元素,如
span
(如果愿意,可以使用
data date
等属性–然后可以使用任何需要的值)。

在循环中,您需要在
datetime
属性中输出机器可读日期,并在标记内容中输出人类可读日期,如下所示:

$timestamps = array(1329472800, 1388916000);

foreach ($timestamps as $ts) {
    echo strftime("<time datetime='%F'>%B %e, %Y</time>\n", $ts);
}
$dates = array("February 17, 2012", "First Sunday of 2014", "Whatever");

foreach ($dates as $date) {
    $ts = strtotime($date);
    $date_html = htmlspecialchars($date);
    if ($ts) {
        $iso_date = strftime("%F", $ts);
        echo "<time datetime='$iso_date'>$date_html</time>\n";
    } else {
        echo "<span class='error'>Invalid date: $date_html</span>\n";
    }
}
$timestamps=array(1329472800、1388916000);
foreach($ts为时间戳){
回显strftime(“%B%e,%Y\n”,$ts);
}
其中:

2012年2月17日
2014年1月5日
(我使用而不是,因为strftime()格式语法更容易嵌入HTML。)


如果您仅将日期作为文本,则可以使用解析日期,如下所示:

$timestamps = array(1329472800, 1388916000);

foreach ($timestamps as $ts) {
    echo strftime("<time datetime='%F'>%B %e, %Y</time>\n", $ts);
}
$dates = array("February 17, 2012", "First Sunday of 2014", "Whatever");

foreach ($dates as $date) {
    $ts = strtotime($date);
    $date_html = htmlspecialchars($date);
    if ($ts) {
        $iso_date = strftime("%F", $ts);
        echo "<time datetime='$iso_date'>$date_html</time>\n";
    } else {
        echo "<span class='error'>Invalid date: $date_html</span>\n";
    }
}
$dates=array(“2012年2月17日”、“2014年第一个星期日”、“随便什么”);
foreach($日期作为$日期){
$ts=标准时间(日期);
$date\u html=htmlspecialchars($date);
若有($ts){
$iso_date=strftime(“%F”,$ts);
回显“$date\u html\n”;
}否则{
回显“无效日期:$date\u html\n”;
}
}
其中:

2012年2月17日
2014年第一个星期日
无效日期:随便

不过要小心:strotime()非常擅长以随机格式解析日期,但其行为并不总是容易预测的。例如,在测试上述代码时,我非常惊讶地发现它显然接受了输入
“I dunno”
,并将其解释为“7小时前”(!)。我不知道为什么。

为什么要使用时间标记?您的问题到底是什么?您当前的尝试在哪里失败?此属性用于反映标记内容的特定日期,但格式为标准格式。在您的示例中,它应该是
2012-02-17
@kingkero,在datetime=“******/***”中,如果日期未知,我可以在那里放置什么
datetime
属性用于以通用方式指定时间戳,而
time
标记的内容将显示出来。你所需要知道的只是书面的,也许更容易阅读(尽管w3schools在他们的网站上有错误是众所周知的)。您可以按照任一链接上的
datetime
链接获取有关datetime属性格式的详细信息。