Domanda

Qual è il modo migliore per localizzare un descrittore del formato della data?

Come sa chiunque provenga da una cultura che non utilizza il formato mm/gg/aaaa, è fastidioso dover inserire le date in questo formato.Il framework .NET fornisce un ottimo supporto per la localizzazione, quindi è banale analizzare le date in base alla cultura dell'utente, ma spesso è necessario visualizzare anche un suggerimento utile sul formato richiesto (in particolare per distinguere tra aa e aaaa che è intercambiabile in la maggior parte delle culture).

Qual è il modo migliore per farlo in un modo che abbia senso per la maggior parte degli utenti (ad es.gg/M/aaa crea confusione a causa del cambio di maiuscole e minuscole e del passaggio da una a due lettere).

È stato utile?

Soluzione 3

Ecco il mio metodo attuale.Eventuali suggerimenti?

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

Altri suggerimenti

Basta usare ISO-8601.È uno standard internazionale.

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

Devo essere d'accordo con le date "sbagliate" dell'OP che stridono davvero con la mia educazione GG/MM/AAAA e trovo che le date e gli orari ISO 8601 siano estremamente facili da lavorare.Per una volta lo standard ha capito bene e engtech ha la risposta ovvia che non richiede localizzazione.

Stavo per segnalare il modulo di input del compleanno sullo stack overflow come un bug a causa di quanto sia irritante per la maggior parte del mondo.

Il problema con gli standard internazionali è che praticamente nessuno li usa.Provo dove posso, ma sono costretto a usare gg/mm/aaaa quasi ovunque nella vita reale, il che significa che ci sono così abituato che usare ISO-8601 è sempre un processo consapevole.Per la maggior parte delle persone che non provano nemmeno a utilizzare ISO-8601 è anche peggio.Se riesci ad internazionalizzare dove puoi, penso che sia un grande vantaggio.

Che ne dici di fornire il formato (mm/gg/aaaa o gg/mm/aaaa) seguito da una stampa della data odierna nella cultura dell'utente.MSDN ha un articolo su formattare un DateTime per la cultura della persona, utilizzando l'oggetto CultureInfo che potrebbe essere utile a tale scopo.Una combinazione del formato (con cui la maggior parte delle persone ha familiarità) combinato con la data corrente rappresentata in quel formato dovrebbe essere un indizio sufficiente per la persona su come inserire la data.(Includi anche un controllo del calendario per coloro che ancora non riescono a capirlo).

Una forma breve è comoda e aiuta a evitare errori di ortografia.Localizza come applicabile, ma assicurati di visualizzare il formato previsto (non lasciare l'utente cieco).Fornire un controllo di selezione della data come file opzionale aiuto per la compilazione del campo.

Come extra, anche l'analisi al volo e la visualizzazione della data in formato lungo potrebbero essere d'aiuto.

La migliore opzione:Consiglierei invece di utilizzare un selettore di date standard.

Alternativa:ogni volta che il contenuto del controllo di modifica cambia, analizzalo e visualizza (in un controllo separato?) il formato lungo della data (ovvero:input "03/04/09" display "Il tuo input:4 marzo 2009")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top