Bazı kazma sonra ben ayar bitti Thread
'ın CurrentCulture olması değerini CultureInfo ( 'en-us') kontrolörün eylem yönteminde:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Bu ayarın her görünümde olmasını istiyorsanız, işte bazı diğer seçenekler .
Hakkında CurrentCulture
özellik değeri:
Cultureınfo birlikte ilişkili nesneler ile bu özelliği tarafından döndürülen nesne, tarih, saat, sayı, para birimi değerlerinin, metnin sıralama düzenine, Çakma sözleşmeler ve dize karşılaştırmaları için varsayılan biçimini belirler.
Kaynak: MSDN CurrentCulture
Not: Önceki CurrentCulture
özellik ayarı, kontrolör zaten CultureInfo("en-US")
tarih formatının olduğu yerde veya benzeriyle çalışıyorsa muhtemelen isteğe bağlıdır "MM/dd/yyyy"
.
CurrentCulture
Özelliği ayarladıktan sonra "M/d/yyyy"
, görünümde tarihi biçime dönüştürmek için kod bloğu ekleyin :
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Yukarıdaki @shortDateLocalFormat
değişken ToString("M/d/yyyy")
eserlerle formatlanmıştır . Eğer ToString("MM/dd/yyyy")
kullanılırsa Ben ilk yaptığım gibi, o zaman sahip sonunda sıfır sorunu lider . Ayrıca Tommy'nin önerdiği gibi ToString("d")
çalışıyor. Aslında "Kısa tarih kalıbı""d"
anlamına gelir ve farklı kültür / dil biçimleriyle de kullanılabilir.
Sanırım yukarıdaki kod bloğu, bazı harika yardımcı yöntem veya benzeri ile de ikame edilebilir .
Örneğin
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
bu yardımcı çağrı ile kullanılabilir
@DateFormatter(Model.AuditDate)
Update , DateTime.ToString (String, IFormatProvider) yöntemi kullanıldığında aynı şeyi yapmanın alternatif bir yolu olduğunu öğrendim . Bu yöntem kullanıldığında, Thread
's CurrentCulture
özelliğini kullanmaya gerek yoktur . CultureInfo("en-US")
> - ikinci bağımsız değişken olarak geçirilir IFormatProvider için DateTime.ToString(String, IFormatProvider)
yöntem.
Değiştirilmiş yardımcı yöntem:
@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