Показывать только дату и время в mvc [дубликат]

61
задан Nick Kahn 23 January 2015 в 17:57
поделиться

11 ответов

1
ответ дан Academy of Programmer 26 August 2018 в 04:22
поделиться
3
ответ дан Akshat 26 August 2018 в 04:22
поделиться
3
ответ дан Cigano Morrison Mendez 26 August 2018 в 04:22
поделиться
14
ответ дан Community 26 August 2018 в 04:22
поделиться
0
ответ дан Jesse de Bruijne 26 August 2018 в 04:22
поделиться
2
ответ дан Piotr Mirek 26 August 2018 в 04:22
поделиться
105
ответ дан TheCascadian 26 August 2018 в 04:22
поделиться
0
ответ дан user3170254 26 August 2018 в 04:22
поделиться
0
ответ дан vicky 26 August 2018 в 04:22
поделиться

После некоторого рытья, и я закончил настройку Thread CurrentCulture , чтобы иметь CultureInfo («en-US») в методе действия контроллера:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 

Вот некоторые другие опции , если вы хотите иметь эту настройку для каждого представления.

О значении свойства CurrentCulture:

Объект CultureInfo , который возвращается этим свойством вместе со связанными с ним объектами, определяет формат по умолчанию для дат, времени, чисел, значений валюты, порядка сортировки текста, условных обозначений обсадной колонны, и сравнение строк.

Источник: MSDN CurrentCulture

Примечание: Предыдущее свойство свойства CurrentCulture вероятно, необязательно, если контроллер уже работает с CultureInfo("en-US") или аналогичным, если формат даты "MM/dd/yyyy".

После установки свойства CurrentCulture добавьте блок кода, чтобы преобразовать дату в формат "M/d/yyyy" в представлении:

@{  //code block 
    var shortDateLocalFormat = "";
    if (Model.AuditDate.HasValue) {
       shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
       //alternative way below
       //shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("d");
    }
}

@shortDateLocalFormat

Над переменной @shortDateLocalFormat форматируется работа ToString("M/d/yyyy"). Если используется ToString("MM/dd/yyyy"), как и в первый раз, вы попадаете в с нулевой ошибкой . Также, как рекомендовано , работает Томми ToString("d"). Фактически "d" означает «Короткая диаграмма даты» и может использоваться с различными форматами культуры / языка.

Я думаю, что блок кода сверху также может быть заменен каким-либо методом хелпера хелпера или аналогичным.

Например

@helper DateFormatter(object date)
{
    var shortDateLocalFormat = "";
    if (date != null) {     
        shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
     }

    @shortDateLocalFormat
}

можно использовать с этим вспомогательным вызовом

@DateFormatter(Model.AuditDate)

Update, я узнал, что есть альтернативный способ сделать то же самое, когда метод DateTime.ToString (String, IFormatProvider) используется. Когда этот метод используется, нет необходимости использовать свойство Thread CurrentCulture. CultureInfo("en-US") передается как второй аргумент -> Метод IFormatProvider - DateTime.ToString(String, IFormatProvider).

Модифицированный вспомогательный метод:

@helper DateFormatter(object date)
{
    var shortDateLocalFormat = "";
    if (date != null) {
       shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
    }

    @shortDateLocalFormat
}

.NET Fiddle

16
ответ дан Community 14 October 2018 в 18:27
поделиться
  • 1
    если я использовал @Model.AuditDate.Value.ToString("d") Additional information: Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions. – Nick Kahn 23 January 2015 в 18:11
  • 2
    @AbuHamzah - звучит так, будто вы все еще пытаетесь поместить это в помощник Html.DisplayFor. Не делай этого. Кроме того, уверены ли вы, что он выбрасывает ошибку на этой строке, а не какое-то другое свойство, которое вы пытаетесь использовать помощник DisplayFor? – Tommy 23 January 2015 в 18:14
  • 3
    Если я использовал @Model..., я получаю эту ошибку: «Модель» конфликтует с объявлением System.Web.Mvc.WebViewPage & lt; TModel & gt; .Model ' – Nick Kahn 23 January 2015 в 18:19
  • 4
    @AbuHamzah Пожалуйста, см. Последний абзац в моем обновленном ответе. – Tommy 23 January 2015 в 18:21
17
ответ дан Community 10 November 2018 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: