2016-10-12 8 views
6

z następującymi kodzie pojawia się następujący wynik w DE-CH Kultura:Zmiany nazw miesięcy, które są zwracane przez toString („MMMM”) do własnego nazwiska

var dateFormat = new DateTime(2016, 10, 12).ToString("MMMM"); 
//Oktober 

Choć co naprawdę chcę to „Oktobar”, ponieważ Tłumaczę na dialekt.

Czy mogę przesłonić, które nazwy miesięcy są zwracane w kulturze de-CH? Nazwy zwracane przez inne kultury powinny pozostać takie same.

+0

Szwajcarski niemiecki nie ma oficjalnych zasad pisowni. Dlatego nie możesz tego osiągnąć, zmieniając go na kulturę de-CH. –

+0

@diiN_ Tak, wiem o tym. –

+3

Możesz go zmienić dla jednej konkretnej instancji 'CultureInfo' (patrz' DateTimeFormatInfo.MonthNames'), ale to się nie zmieni, co się stanie, jeśli ponownie pobierzesz kulturę "de-CH". Czy zawsze używasz tej konkretnej kultury? Jeśli tak, możesz po prostu przekazać go do wszystkich wywołań ToString'/'Format'. –

Odpowiedz

4
CultureInfo myCIclone = new CultureInfo("de-CH"); 

myCIclone.DateTimeFormat.MonthNames = new string[] 
{"1","2","3","4","5","6","7","8","9","Oktobär","11","12", "13"}; 

var dateFormat = new DateTime(2016, 10, 12).ToString("MMMM", myCIclone); 

Można zastąpić nazwy MonthName, takie jak John Skeet, dla określonych informacji o kulturze.

+1

Jeśli ustawisz zmodyfikowaną kulturę w bieżącym wątku, nie musisz określać jej jako drugiego parametru metody "ToString". –

+0

Dzięki, działa to zgodnie z oczekiwaniami! Przeczytałem to w dokumentacji o DateTimeFormat.MonthNames: 'Jeśli ustawisz właściwość MonthNames, musisz także ustawić właściwość MonthGenitiveNames. Do czego będą one używane? Nie rozumiem uwagi dodanej do właściwości MonthGenetiveNames: 'W niektórych językach nazwa miesiąca, która jest częścią daty, pojawia się w dopełniaczu. Na przykład data w rosyjskim (Rosja) lub "ru-RU", kultura składa się z numeru dnia i nazwy miesiąca dopełniacza, na przykład 1 Января. –

+1

@Marimba z tego co rozumiem dla gramatycznego przypadku język. Większość języków cyrylicy ma to, co oznacza, że ​​w zależności od kontekstu nazwa miesiąca będzie inna. Jeśli więc twój język ma dopełniacz, powinieneś go również zastąpić. – mybirthname

0

Może to być pomocne w pełnym zakresie. Musisz zastąpić domyślną wartość.

//Declare Culture Info with your goblaization name. 
CultureInfo culture = new CultureInfo("de-CH"); 

//Assign needed value. 
culture.DateTimeFormat.MonthNames = new string[]{"1","2","3","4","5","6","7","8","9","Oktobär","11","12", "13"}; 

//Assign it in string. 
string date= new DateTime(2016, 10, 12).ToString("MMMM", culture); 
Powiązane problemy