2012-12-13 7 views
8

Cóż, Próbuję uzyskać domyślny format daty kultury.Jak znaleźć domyślny format daty kultury

Na przykład en-us ma "m/dd/rrrr", en-uk "d/mm/rrrr". Kultura może być wszystkim na komputerze klienta. i Dateformat może być cokolwiek. jak dla Culture jest en-us, ale datformat to dd-MMM-rrrr.

więc w tej sprawie chcę uzyskać ShortDateformatString jako m/dd/rrrr nie dd-MMM-rrrr.

Próbowałem zrobić to dla całej kultury za pomocą:

string _cultureInfo = CultureInfo.CurrentCulture.IetfLanguageTag; 
CultureInfo shortDatefomatString = new CultureInfo(_cultureInfo); 
string old = shortDatefomatString.DateTimeFormat.ShortDatePattern; 

ale zawsze wraca MT dd-MMM-yyyy. potrzebuję domyślnego zestawu, a nie zestawu na komputerze.

Odpowiedz

3

Uważam, że problemem jest sposób, w jaki odzyskujesz pożądaną kulturę.

To powinno dać domyślne ustawienia Kultura:

var cultureLanguageTag = CultureInfo.CurrentCulture.IetfLanguageTag; 
var defaultCulture = CultureInfo.GetCultureInfoByIetfLanguageTag(cultureLanguageTag); 

konstruowania jednego z ciągiem ma być używana z nazwą kultury, ja nie wiem, czy to powinno działać z tagiem IETF, to być może właśnie zwracają obecną kulturę w tej sprawie.

+0

To działa i daje właściwy wynik. domyślny format daty. – user1899600

1

Według MSDN, CurrentCulture powróci kultury w jeden z następujących sposobów:

  1. Zwraca CultureInfo.DefaultThreadCurrentCulture jeśli nie jest null. (Zauważ, że jeśli nie ustawisz kultury, zawsze będzie ona pusta).
  2. Powoduje zwrócenie wyniku wywołania funkcji Windows 'GetUserDefaultLocaleName. Spowoduje to zwrócenie dowolnej kultury ustawionej w Panelu sterowania.

Może być możliwe, że zmiana kultury w Panelu sterowania spowoduje, że zmiany nie zostaną wyświetlone do czasu ponownego uruchomienia komputera.

Aby sprawdzić, czy kultury wyświetlają poprawne daty, możesz ręcznie wybrać kulturę zamiast używać kultury systemowej, używając CultureInfo.CreateSpecificCulture("en-US"); (zastępując "en-US" kodami kultury innych krajów).

+0

CreateSpecificCulture również podać tylko aktualne ustawienia. Dziękuję za odpowiedź. – user1899600

0

Poniższe wydaje się działać dla mnie.

Console.WriteLine(CultureInfo.GetCultureInfo("en-us").DateTimeFormat.ShortDatePattern); 
Console.WriteLine(CultureInfo.GetCultureInfo("en-gb").DateTimeFormat.ShortDatePattern); 

wyjściowa: M/D/rrrr dd/mm/rrrr

+0

w przypadku aktualnej kultury jest taka sama, a format Shortdate jest inny. wynik byłby inny. – user1899600