Question

Quelle est la meilleure façon de localiser un descripteur de format de date ?

Comme le sait toute personne issue d’une culture qui n’utilise pas le format mm/jj/aaaa, il est ennuyeux de devoir saisir des dates dans ce format.Le framework .NET fournit un très bon support de localisation, il est donc trivial d'analyser les dates en fonction de la culture des utilisateurs, mais vous souhaitez souvent également afficher une indication utile quant au format requis (en particulier pour faire la distinction entre yy et yyyy qui sont interchangeables dans la plupart des cultures).

Quelle est la meilleure façon de procéder d'une manière qui ait du sens pour la plupart des utilisateurs (par ex.jj/M/aaa prête à confusion en raison du changement de casse et du basculement entre une et deux lettres).

Était-ce utile?

La solution 3

Voici ma méthode actuelle.Aucune suggestion?

Regex singleMToDoubleRegex = new Regex("(?<!m)m(?!m)");
Regex singleDToDoubleRegex = new Regex("(?<!d)d(?!d)");
CultureInfo currentCulture = CultureInfo.CurrentUICulture;

// If the culture is netural there is no date pattern to use, so use the default.
if (currentCulture.IsNeutralCulture)
{
    currentCulture = CultureInfo.InvariantCulture;
}

// Massage the format into a more general user friendly form.
string shortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern.ToLower();
shortDatePattern = singleMToDoubleRegex.Replace(shortDatePattern, "mm");
shortDatePattern = singleDToDoubleRegex.Replace(shortDatePattern, "dd");

Autres conseils

Utilisez simplement ISO-8601.C'est une norme internationale.

Date and time (current at page generation) expressed according to ISO 8601:
Date:                           2014-07-05
Combined date and time in UTC:  2014-07-05T04:00:25+00:00
                                2014-07-05T04:00:25Z
Week:                           2014-W27
Date with week number:          2014-W27-6
Ordinal date:                   2014-186

Je dois être d'accord avec les "mauvaises" dates de l'OP qui sont vraiment en contradiction avec mon éducation JJ/MM/AAAA et je trouve les dates et heures ISO 8601 extrêmement faciles à utiliser.Pour une fois, la norme a bien fait les choses et technologie d'ingénierie a la réponse évidente qui ne nécessite pas de localisation.

J'allais signaler le formulaire de saisie d'anniversaire sur le débordement de pile comme un bug en raison de son caractère douloureux pour la majorité du monde.

Le problème des normes internationales est que pratiquement personne ne les utilise.J'essaie là où je peux, mais je suis obligé d'utiliser jj/mm/aaaa presque partout dans la vraie vie, ce qui signifie que j'y suis tellement habitué que c'est toujours un processus conscient d'utiliser ISO-8601.Pour la majorité des gens qui n’essaient même pas d’utiliser la norme ISO-8601, c’est encore pire.Si vous pouvez vous internationaliser là où vous le pouvez, je pense que c'est un grand avantage.

Que diriez-vous de donner le format (mm/jj/aaaa ou jj/mm/aaaa) suivi d'une impression de la date du jour dans la culture de l'utilisateur.MSDN a un article sur formater un DateTime pour la culture de la personne, en utilisant l'objet CultureInfo qui pourrait être utile pour ce faire.Une combinaison du format (que la plupart des gens connaissent) combinée à la date actuelle représentée dans ce format devrait suffire à indiquer à la personne comment saisir la date.(Incluez également un contrôle de calendrier pour ceux qui n'arrivent toujours pas à le comprendre).

Un formulaire court est pratique et permet d’éviter les fautes d’orthographe.Localisez le cas échéant, mais veillez à afficher le format attendu (ne laissez pas l'utilisateur aveugle).Fournir un contrôle de sélecteur de date en tant que facultatif aide à remplir le champ.

En outre, l'analyse à la volée et l'affichage de la date sous forme longue pourraient également être utiles.

Meilleure option:Je recommanderais plutôt d’utiliser un sélecteur de date standard.

Alternative:à chaque fois que le contenu du contrôle d'édition change, analysez-le et affichez (dans un contrôle séparé ?) le format long de la date (c'est-à-dire :saisie "03/04/09" affichage "Votre saisie :4 mars 2009")

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