.net - une - recherche bibliographique exemple




Localiser les descripteurs de format de date (5)

Je suis d'accord avec les dates OP 'fausses' vraiment jar avec mon éducation JJ / MM / YYYY et je trouve les dates et heures ISO 8601 extrêmement facile à travailler. Pour une fois, la norme a eu raison et engtech a la réponse évidente qui ne nécessite pas de localisation.

J'allais signaler que le formulaire d'entrée d'anniversaire sur le débordement de la pile était un bogue à cause de la grossièreté de la majorité du monde.

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

Comme tout le monde d'une culture qui n'utilise pas le format mm / jj / aaaa sait, il est ennuyeux d'avoir à entrer des dates dans ce format. Le framework .NET fournit une très bonne prise en charge de la localisation, il est donc trivial d'analyser les dates en fonction de la culture de l'utilisateur, mais vous souhaitez également afficher un indice utile sur le format requis (notamment pour distinguer yyyyyyy interchangeable la plupart des cultures).

Quelle est la meilleure façon de le faire d'une manière qui a du sens pour la plupart des utilisateurs (par exemple, jj / m / aaaa est confus à cause du changement de casse et de la commutation entre une et deux lettres).


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


Une forme courte 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 comme aide optionnelle pour remplir le champ.

En outre, l'analyse syntaxique à la volée et l'affichage de la date sous forme longue pourraient aussi aider.


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");

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, l'analyser et afficher (dans un contrôle séparé?) Le format long de la date (par exemple: entrée "03/04/09" afficher "Votre contribution: 4 mars 2009" )





globalization