Po pewnym kopania i skończyło się na ustawienie Thread
„s CurrentCulture wartość mają CultureInfo («en-us») w sposobie działania kontrolera:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Oto kilka innych opcji jeśli chcesz mieć to ustawienie w każdym widoku.
O CurrentCulture
wartości nieruchomości:
Obiekt CultureInfo, który jest zwracany przez tę właściwość, wraz ze skojarzonymi z nim obiektami, określają domyślny format dat, godzin, liczb, wartości walutowych, kolejności sortowania tekstu, konwencji wielkości liter i porównań ciągów.
Źródło: MSDN CurrentCulture
Uwaga: poprzednie CurrentCulture
ustawienie właściwości jest prawdopodobnie opcjonalne, jeśli kontroler jest już uruchomiony z CultureInfo("en-US")
lub podobnym, gdzie jest format daty"MM/dd/yyyy"
.
Po ustawieniu CurrentCulture
właściwości dodaj blok kodu, aby przekonwertować datę na "M/d/yyyy"
format w widoku:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Powyżej @shortDateLocalFormat
zmienna jest sformatowana za pomocą ToString("M/d/yyyy")
dzieł. Jeśli ToString("MM/dd/yyyy")
jest używane, tak jak zrobiłem to na początku, w końcu masz zerowy problem . Działa też polecany przez Tommy'ego ToString("d")
. Właściwie "d"
oznacza „Wzorzec daty krótkiej” i może być również używany z różnymi formatami kulturowymi / językowymi.
Myślę, że powyższy blok kodu można również zastąpić jakąś fajną metodą pomocniczą lub podobną.
Na przykład
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
może być używany z tym wywołaniem pomocnika
@DateFormatter(Model.AuditDate)
Aktualizacja , dowiedziałem się, że istnieje alternatywny sposób zrobienia tego samego, gdy używana jest metoda DateTime.ToString (String, IFormatProvider) . Przy zastosowaniu tej metody to nie ma potrzeby korzystania z Thread
„s CurrentCulture
nieruchomości. Wartość CultureInfo("en-US")
jest przekazywana jako drugi argument -> IFormatProvider do DateTime.ToString(String, IFormatProvider)
metody.
Zmodyfikowana metoda pomocnicza:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET Fiddle
No overload for method 'ToString' takes 1 arguments