2012-02-28 51 views
0

我正在寻找输出内容在Umbraco内发布时间戳的HTML5 <time>元素所需的正确格式。输出正确的“日期时间”<time>属性(Umbraco/Razor)

例如:

<time datetime="2012-02-28T20:00+00:00" pubdate>February 28, 2012</time> 

有没有办法中的一把umbraco或剃刀实现这一目标?我知道在PHP中有一种特殊的“W3C”输出时间戳的方式:http://goo.gl/sEFsh

在此元素的正确格式的更多信息可以在这里找到:http://html5doctor.com/the-time-element/

回答

1

它看起来像这种情况的最好的选择可能是使用全球“UpdateDate”是这样的:

<time datetime="@Model.UpdateDate.ToString("yyyy-MM-ddTH:mmzzz")" pubdate> 
    @Model.UpdateDate.ToLongDateString() 
</time> 

似乎输出所需的格式和发布时间,而非当前的日期。任何人都可以看到这个解决方案的任何问

1

我想你可能会寻找格式字符串为“O”,像这样(在剃刀):

@{ 
var now = DateTime.Now; 
} 
<time datetime="@now.ToString("o")" pubdate>@now.ToLongDateString()</time> 

可生产这对我来说:

<time datetime="2012-02-28T11:41:50.3697628-05:00" pubdate>Tuesday, February 28, 2012</time> 
+0

这是伟大的 - 我得到相同的输出!我现在正在寻找删除不必要的数字,并强制输出发布的日期而不是当前的日期。 – AlecRust 2012-02-29 10:16:05

+0

此外,此代码似乎在.cshtml脚本文件中工作,但不在页面模板中。是否需要为此稍微改变格式? – AlecRust 2012-02-29 10:27:23

+0

您可以将pubdate添加到模型或ViewBag,或者您想将其获取到您的视图代码。您也可以使用更精确的格式:@ Model.PubDate.ToString(“yyyy-MM-ddTHH:mmzzz”) - 请参阅http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx格式化的可能性。至于页面模板的东西,我不确定。 – 2012-02-29 16:07:24

-1

我通常只使用此代码在CSHTML

@yourDate.Date.ToString("yyyy-MM-dd")T00:00+00:00 
+0

在你的例子中'yourDate'指向哪里?我期待输出发布的日期。 – AlecRust 2012-02-29 10:16:58

+0

它的一个变量可以保存你想要打印的日期的引用。你提到了有关“发布日期”的内容,但这是一个与你的问题无关的实现细节。 – 2012-03-02 15:29:17

2

这个怎么样在剃刀:

@DateTime.Now.ToString("yyyy-MM-ddTHH:mmzzz") 

这不会产生秒和毫秒的任何输出在你的榜样。

+0

谢谢!这会在'2012-02-29T15:55 + 00:00'之后生成确切的日期输出。 最后一部分是让它输出发布日期而不是当前日期? – AlecRust 2012-02-29 15:57:17

+0

您使用的是哪种版本的Umbraco? – marapet 2012-02-29 18:22:49

+0

我正在使用v4.7.1 – AlecRust 2012-03-01 09:31:36