Выведите правильный атрибут «datetime» <time>(Umbraco / Razor) - PullRequest
0 голосов
/ 28 февраля 2012

Я хочу вывести временную метку, когда контент был опубликован в Umbraco, в правильном формате, требуемом элементом HTML5 <time>.

Например:

<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/

Ответы [ 5 ]

2 голосов
/ 29 февраля 2012

Как насчет бритвы:

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

Это не создает никакого вывода для секунд и миллисекунд, как в вашем примере.

1 голос
/ 24 февраля 2013

Использовать .ToString ("s")

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

Выходные данные сгенерируют: «2013-02-15T21: 15: 07» и пройдут проверку html

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

1 голос
/ 01 марта 2012

Похоже, что лучшим вариантом для этого может быть использование глобальной "UpdateDate", например:

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

Выводится желаемый формат и дата публикации, а не текущая дата. Кто-нибудь может увидеть какие-либо проблемы с этим решением?

1 голос
/ 28 февраля 2012

Я думаю, что строка формата, которую вы можете искать, это "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 голосов
/ 28 февраля 2012

Я обычно просто использую этот код в cshtml

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