Descriptori de format dată localizarea

voturi
15

Care este cel mai bun mod de a localiza un descriptor de format dată?

Ca cineva dintr-o cultură care nu utilizează formatul ll / zz / aaaa știe, este enervant să trebuiască să introduceți date în acest format. .NET Framework ofera un sprijin foarte bun de localizare, așa că este trivial pentru a analiza datele în funcție de cultura utilizatorilor, dar de multe ori doriti pentru a afișa de asemenea, un indiciu util cu privire la formatul cerut (în special pentru a distinge între yy și aaaa, care este interschimbabil în cele mai multe culturi).

Care este cel mai bun mod de a face acest lucru într-un mod care face sens pentru majoritatea utilizatorilor (de exemplu, dd / M / yyy este confuz din cauza schimbării în caz și comutarea între una și două litere).

Întrebat 03/08/2008 la 18:30
sursa de către utilizator
În alte limbi...                            


7 răspunsuri

voturi
6

Doar folosi ISO-8601 . Este un standard internațional.

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
Publicat 03/08/2008 la 19:18
sursa de către utilizator

voturi
4

Trebuie să fie de acord cu OP „greșit“ date de borcan într - adevăr cu DD meu / LL / AAAA creștere și am găsit ISO 8601 și datele de ori extrem de ușor de a lucra cu. Pentru prima dată standardul luat drept și engtech are răspunsul evident că nu are nevoie de localizare.

Am fost de gând să raporteze formularul de intrare ziua de naștere pe overflow stiva ca un bug din cauza de cât de mult de un deget inflamat este la cea mai mare parte a lumii.

Publicat 04/08/2008 la 19:50
sursa de către utilizator

voturi
2

Aici este metoda mea curentă. Orice sugestii?

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");
Publicat 03/08/2008 la 18:31
sursa de către utilizator

voturi
1

O formă scurtă este convenabilă și ajută la evitarea greșelilor de ortografie. Localizează după caz, dar asigurați - vă că pentru a afișa formatul de așteptat (nu lăsați blind - ul utilizatorului). Furnizați un control pentru selectarea datelor, ca opțional consilier completarea în domeniu.

Ca, in plus parsing on-the-fly și afișarea datei pe lung ar putea ajuta prea.

Publicat 04/08/2008 la 20:13
sursa de către utilizator

voturi
1

Problema cu standardele internaționale este faptul că destul de mult le folosește nimeni. Încerc în cazul în care pot, dar eu sunt obligat să utilizeze zz / ll / aaaa aproape peste tot în viața reală, ceea ce înseamnă că eu sunt atât de folosit pentru a-l este întotdeauna un proces conștient de a folosi ISO-8601. Pentru majoritatea oamenilor care nici măcar nu încearcă să utilizeze ISO-8601 este chiar mai rău. Dacă se poate internaționaliza unde puteți, cred că este un mare avantaj.

Publicat 04/08/2008 la 09:14
sursa de către utilizator

voturi
1

Cum despre a da formatul (ll / zz / aaaa sau zz / ll / aaaa) , urmată de o imprimare de astăzi în cultura utilizatorului. MSDN are un articol despre formatarea unui DateTime pentru cultura persoanei , folosind obiectul CultureInfo care ar putea fi de ajutor în a face acest lucru. O combinație a formatului ( pe care majoritatea oamenilor sunt familiarizați cu) , combinate cu data curentă reprezentate în acest format ar trebui să fie suficient de un indiciu pentru persoana cu privire la modul în care ar trebui să intre data. (Includ de asemenea un control calendar pentru cei care inca cant dau seama).

Publicat 03/08/2008 la 18:37
sursa de către utilizator

voturi
0

Cea mai bună opțiune : în schimb aș recomanda să utilizați o dată selector standard de .

Alternativa : de fiecare dată conținutul modificărilor de editare de control, acesta și afișare analiza (într - un control separat?) Formatul lung de la data ( de exemplu: de intrare „03/04/09“ display „input: 04 martie 2009“ )

Publicat 19/09/2008 la 18:02
sursa de către utilizator

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