Het lokaliseren van datumnotatie descriptors

stemmen
15

Wat is de beste manier om een ​​datumnotatie descriptor lokaliseren?

Als iemand van een cultuur die geen gebruik maakt van de dd / mm / yyyy formaat kent, is het vervelend te hebben om data in dit formaat in te voeren. Het .NET framework biedt een aantal zeer goede lokalisatie ondersteuning, dus het is triviaal om data te analyseren op basis van de gebruikers cultuur, maar u willen vaak ook een interessante tip weer te geven met betrekking tot het vereiste formaat (in het bijzonder een onderscheid te maken tussen yy en yyyy die uitwisselbaar is in de meeste culturen).

Wat is de beste manier om dit op een manier die zinvol meeste gebruikers (bv dd / M / yyy is verwarrend omdat de verandering bij de omschakeling tussen een en twee letters).

De vraag is gesteld op 03/08/2008 om 18:30
bron van user
In andere talen...                            


7 antwoorden

stemmen
6

Gewoon gebruik maken van ISO-8601 . Het is een internationale standaard.

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
antwoordde op 03/08/2008 om 19:18
bron van user

stemmen
4

Ik ben het eens met de OP 'verkeerde' data echt potje met mijn DD / MM / YYYY opvoeding en ik vind ISO 8601 data en tijden zeer eenvoudig om mee te werken. Voor een keer de standaard bij het rechte eind en engtech heeft voor de hand liggende antwoord dat niet lokalisatie vereist.

Ik was van plan om de verjaardag invulformulier op stack overflow als een bug rapporteert vanwege de manier waarop veel van een zere duim is om de meerderheid van de wereld.

antwoordde op 04/08/2008 om 19:50
bron van user

stemmen
2

Hier is mijn huidige methode. Eventuele suggesties?

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");
antwoordde op 03/08/2008 om 18:31
bron van user

stemmen
1

Een korte vorm is handig en helpt te voorkomen spelfouten. Lokaliseren voor zover van toepassing, maar zorg ervoor dat het verwachte formaat weer te geven (niet verlaten de gebruiker blind). Te date-picker control als optionele assistent het invullen van het veld.

Als extra, on-the-fly parsing en weergave van de datum in lange vorm misschien te helpen.

antwoordde op 04/08/2008 om 20:13
bron van user

stemmen
1

Het probleem met de internationale normen is dat vrijwel niemand gebruikt ze. Ik probeer waar ik kan, maar ik ben gedwongen om te gebruiken dd / mm / yyyy bijna overal in het echte leven, wat betekent dat ik ben zo gewend het is altijd een bewust proces om ISO-8601 te gebruiken. Voor de meerderheid van de mensen die niet eens proberen om ISO-8601 te gebruiken is het nog erger. Als je kunt internationaliseren, waar je kunt, ik denk dat het een groot voordeel.

antwoordde op 04/08/2008 om 09:14
bron van user

stemmen
1

Hoe zit het met het geven van het formaat (dd / mm / jjjj of dd / mm / yyyy), gevolgd door een afdruk van de datum van vandaag in de cultuur van de gebruiker. MSDN heeft een artikel over het opmaken van een DateTime voor cultuur van de persoon , met behulp van de CultureInfo object dat nuttig zijn bij het doen van dit zou kunnen zijn. Een combinatie van het formaat (die de meeste mensen bekend zijn met) in combinatie met de huidige datum weergegeven in dat formaat zou genoeg moeten zijn van een aanwijzing aan de persoon over hoe ze de datum moet voeren zijn. (Ook zijn onder andere een kalender controle voor degenen die nog steeds cant uitzoeken).

antwoordde op 03/08/2008 om 18:37
bron van user

stemmen
0

Beste optie : Ik zou in plaats daarvan aanbevelen aan een standaard datumkiezer gebruiken.

Alternatief : elke keer dat de inhoud van de bewerking controle verandert, ontleden en weer te geven (in een apart controle?) De lange formaat van de datum (dat wil zeggen: input "03/04/09" scherm "Uw invoer: 4 maart 2009" )

antwoordde op 19/09/2008 om 18:02
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more