Question

Je modification d'une application Web qui utilise globalisée stockée CultureInfo pour chaque utilisateur connecté.

Le client souhaite la saisie des données de temps à localiser. Affichage est pas un problème car la mise en forme est déjà disponible. Cependant, je dois détecter si le courant est cultureinfo pour le temps de 24 heures ou am / pm Je peux afficher les cases d'entrée correcte (pas seulement un champ de texte).

Mon idée initiale était de vérifier la propriété DateTimeInfo de CultureInfo et voir si le ShortTimePattern contenait un H majuscule ou minuscule h, mais cela ne se sentait pas assez robuste pour moi.

Y at-il une meilleure façon? J'ai lu les propriétés de la classe des deux, mais à moins que je me manque quelque chose, je ne vois pas de méthodes existantes ou propriétés.

Était-ce utile?

La solution

Je ne pense pas qu'il y ait une meilleure façon d'obtenir ces informations. Le modèle de temps pour une culture pourrait contenir quoi que ce soit (un utilisateur peut même créer une culture personnalisée où le ShortTimePattern est « \ bonjour » et DateTime.ToString() retournerait « bonjour » pour tout le temps). Dans ce cas, comment le cadre de déterminer si ce CultureInfo est au format 24 heures ou 12 heures?

« normal » DateTimeFormatInfo.ShortTimePattern nécessairement contenir un « h » ou un « H », sinon l'heure ne sera pas affichée. Je pense que vous pouvez suivre votre idée initiale et vérifier cela. Vous pouvez également vérifier que le « h » ou « H » est pas échappé avec un \ comme dans mon exemple « \ bonjour » parce que cela ne représente pas l'heure:)

Autres conseils

La façon la plus robuste est de vérifier si DateTimeFormatInfo.AMDesignator est une chaîne vide.

if (DateTimeFormatInfo.CurrentInfo.AMDesignator == "")
  //24hour format
else
  //12hour format

Vérification de « H » / « h » semble plus robuste que la vérification de l'AM / PM désignateur. Un bon exemple est en-fr: La chaîne de format de l'heure est HH: mm et désignateurs AM / PM sont fixés AM / PM Windows affiche l'heure en format 24h! Cela semble être une définition incompatible, mais la vérification de « H » a fixé mon bug.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top