.net - Localisation des descripteurs de format de date

Translate

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 une très bonne prise en charge de la localisation, il est donc trivial d'analyser les dates en fonction de la culture des utilisateurs, mais vous souhaitez souvent afficher également un indice utile sur le format requis (en particulier pour faire la distinction entre yy et yyyy, qui est interchangeable dans la plupart des cultures).

Quelle est la meilleure façon de faire cela d'une manière qui ait du sens pour la plupart des utilisateurs (par exemple, jj / M / aaa est déroutant en raison du changement de casse et du passage d'une à deux lettres).

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

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
La source
Translate

Je suis d'accord avec les dates et heures de l'OP «incorrectes» qui ne correspondent vraiment pas à mon éducation JJ / MM / AAAA et je trouve les dates et heures ISO 8601 extrêmement faciles à utiliser. Pour une fois, la norme l'a bien fait etengtecha 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 bogue en raison de la douleur du pouce pour la majorité du monde.

La source
ICR
Translate

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");
La source
ICR
Translate

Le problème avec les normes internationales est que quasiment personne ne les utilise. J'essaye là 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é que c'est toujours un processus conscient d'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.

La source
Translate

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 surmise en forme d'un DateTime pour la culture de la personne, en utilisant l'objet CultureInfo qui peut ê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 être un indice suffisant pour la personne sur la façon dont elle doit entrer la date. (Incluez également un contrôle de calendrier pour ceux qui ne peuvent toujours pas le comprendre).

La source
Translate

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

De plus, l'analyse et l'affichage à la volée de la date sous forme longue peuvent également aider.

La source
Translate

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

Alternative: à chaque fois que le contenu du champ d'édition change, l'analyser et afficher (dans un champ séparé?) le format long de la date (ie: entrée "03/04/09" affichage "Votre entrée: 4 mars 2009")

La source
prochain:
Python et MySQL