【问题标题】:Output correct "datetime" <time> attribute (Umbraco/Razor)输出正确的“日期时间”<时间>属性(Umbraco/Razor)
【发布时间】:2012-03-18 03:22:17
【问题描述】:

我希望以 HTML5 &lt;time&gt; 元素所需的正确格式输出在 Umbraco 中发布内容的时间戳。

例如:

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

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

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

【问题讨论】:

    标签: asp.net asp.net-mvc html razor umbraco


    【解决方案1】:

    使用 .ToString("s")

    <time datetime="@Model.UpdateDate.ToString("s")">...</time>
    

    输出将生成:“2013-02-15T21:15:07”并通过html验证

    http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

    【讨论】:

      【解决方案2】:

      看起来最好的选择可能是像这样使用全局“UpdateDate”:

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

      似乎输出所需的格式和发布日期而不是当前日期。任何人都可以看到此解决方案有任何问题吗?

      【讨论】:

        【解决方案3】:

        剃须刀中的这个怎么样:

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

        这不会像您的示例那样在秒和毫秒内生成任何输出。

        【讨论】:

        • 谢谢!这会产生我在2012-02-29T15:55+00:00 之后的确切日期输出。最后一部分是让它输出发布日期而不是当前日期?
        • 您使用的是哪个版本的 Umbraco?
        【解决方案4】:

        我通常只是在cshtml中使用这段代码

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

        【讨论】:

        • 在您的示例中,yourDate 指的是哪里?我希望输出发布的日期。
        • 它是一个变量,包含对您不想打印的任何日期的引用。您提到了有关“发布日期”的内容,但这是与您的问题无关的实施细节。
        【解决方案5】:

        我认为您可能正在寻找的格式字符串是“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>
        

        【讨论】:

        • 太好了——我得到了相同的输出!我现在正在寻找从时间结束时删除不必要的数字,并让它输出发布日期而不是当前日期。
        • 此外,此代码似乎可以在 .cshtml 脚本文件中使用,但不能在页面模板中使用。是否需要为此稍有不同的格式?
        • 您可以将发布日期添加到模型或 ViewBag 中,或者您希望将其添加到您的视图代码中。您还可以使用更精确的格式,如下所示:@Model.PubDate.ToString("yyyy-MM-ddTHH:mmzzz") - 请参阅 msdn.microsoft.com/en-us/library/8kb3ddd4.aspx 了解所有可能的格式。至于页面模板的事情,我不确定。
        • 有趣,@Model.PubDate.ToString("yyyy-MM-ddTH:mmzzz") 没有为我输出任何内容,这是否意味着发布日期不适用于该页面?来自@marapet 下面的@DateTime.Now.ToString("yyyy-MM-ddTHH:mmzzz") 输出正确,只是日期错误!感谢您提供 MSDN 链接,我会读一读。
        • 您的 PubDate 变量存储在哪里?在控制器操作中,将其设置为: ViewBag.PubDate = [logic];然后在 .cshtml 代码中,这样调用它:@ViewBag.PubDate.ToString("yyyy-MM-ddTHH:mmzzz")
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2017-12-29
        相关资源
        最近更新 更多