Вам нужно форматировать DateTime в соответствии с RFC3339 стандартной
HTML5 ввода даты и времени спецификации: http://dev.w3.org/html5/markup/input.datetime.html
Так ваше значение должно быть отформатирована что-то вроде этого:
<input ... type="datetime" value="2012-03-30T10:00:00" ... />
Чтобы отформатировать в качестве RFC3339 вы можете позвонить:
DateTime.ToString("yyyy-MM-ddThh:mm:ssZ");
Вы можете сделать это, добавив DisplayFormatAttribute вам Article.PublishedDate:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-ddThh:mm:ssZ}")]
public DateTime PublishedDate { get; set; }
Проблема в настоящее время (по крайней мере, для меня) в том, что свойство теперь всегда остается отформатированный как это. Вы можете использовать EditorFor шаблон для этого:
@model DateTime?
@{
var attributes = new Dictionary<string, object>();
attributes.Add("type", "datetime");
attributes.Add("class", "text-box single-line");
//since this is a constraint, IsRequired and other constraints
//won't necessarily apply in the browser, but in case script
//turns off readonly we want the constraints passed
if (ViewData.ModelMetadata.IsReadOnly)
{
attributes.Add("readonly", "readonly");
}
if (ViewData.ModelMetadata.IsRequired)
{
attributes.Add("required", "required");
}
}
@Html.TextBox("", Model.HasValue ? Model.Value.ToUniversalTime().ToString("yyyy-MM-ddThh:mm:ssZ") : String.Empty, attributes)
на основе DateTime.cshtml
А для местных дат:
@model DateTime?
@{
var attributes = new Dictionary<string, object>();
attributes.Add("type", "datetime-local");
attributes.Add("class", "text-box single-line");
if (ViewData.ModelMetadata.IsRequired)
{
attributes.Add("required", "required");
}
}
@Html.TextBox("", Model.HasValue ? Model.Value.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss") : String.Empty, attributes)
на основе DateTime-Local.cshtml
подмигнули именно то, что я искал но у меня проблема, когда я добавляю или редактирую статью. Он получает время от ввода + 2 часа, а когда редактирую статью во входных данных, есть 04:02 и должно быть 16:02. Я думаю, что эти проблемы связаны с чем-то вроде конвертирования между 24 часами/12-часовым временем, но не знают, как это исправить. –
Вы можете попробовать использовать , который использует следующий формат: DateTime.ToString ("yyy-MMM-ddThh: mm: ss") –
Добавлены некоторые шаблоны EditorFor, я использую их вместо DisplayFormatAttribute. Вы должны поместить их в папку «Views/Shared/EditorTemplates» –