Après quelques fouilles et j'ai fini par définir Thread
la valeur CurrentCulture pour avoir CultureInfo ("en-US") dans la méthode d'action du contrôleur:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Voici quelques autres options si vous souhaitez avoir ce paramètre sur chaque vue.
À propos de la CurrentCulture
valeur de la propriété:
L' objet CultureInfo renvoyé par cette propriété, ainsi que ses objets associés, déterminent le format par défaut des dates, heures, nombres, valeurs monétaires, l'ordre de tri du texte, les conventions de casse et les comparaisons de chaînes.
Source: MSDN CurrentCulture
Remarque: Le CurrentCulture
paramètre de propriété précédent est probablement facultatif si le contrôleur est déjà en cours d'exécution avec CultureInfo("en-US")
ou similaire où le format de date est "MM/dd/yyyy"
.
Après avoir défini la CurrentCulture
propriété, ajoutez un bloc de code pour convertir la date au "M/d/yyyy"
format dans la vue:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Au-dessus, la @shortDateLocalFormat
variable est formatée avec des ToString("M/d/yyyy")
œuvres. Si ToString("MM/dd/yyyy")
est utilisé, comme je l'ai fait d'abord, vous finissez par avoir un problème majeur . Comme recommandé par Tommy ToString("d")
fonctionne également. En fait, cela "d"
signifie «modèle de date courte» et peut également être utilisé avec différents formats de culture / langue.
Je suppose que le bloc de code ci-dessus peut également être remplacé par une méthode d'assistance cool ou similaire.
Par exemple
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
peut être utilisé avec cet appel d'assistance
@DateFormatter(Model.AuditDate)
Mise à jour , j'ai découvert qu'il existe un autre moyen de faire la même chose lorsque la méthode DateTime.ToString (String, IFormatProvider) est utilisée. Lorsque cette méthode est utilisée, il n'est pas nécessaire d'utiliser Thread
la CurrentCulture
propriété de. Le CultureInfo("en-US")
est passé comme deuxième argument -> IFormatProvider à la DateTime.ToString(String, IFormatProvider)
méthode.
Méthode d'assistance modifiée:
@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