Oto dziwny dla ciebie..ToShortDateString zwraca inny format kulturowy niż oczekiwano.
Mamy C# interfejs, który działa od początku roku bez problemu na komputerze z Windows XP (32-bit). Właśnie zaktualizowaliśmy komputer do systemu Windows 7 (64-bitowego) z aplikacjami zainstalowanymi przez SCCM.
Przy ostatnim uruchomieniu daty w polu tekstowym zaczęły pojawiać się w formacie amerykańskim (5/2/2014) zamiast w formacie brytyjskim (02/05/2014).
kod, który jest używany:
string Lines = FromFormat.Text + " from " + FromFormat.Charge_From.ToShortDateString() + " to " + FromFormat.Charge_To.ToShortDateString() +".";
przypadku FromFormat celem ze źródła danych Charge_From & Charge_To DATATIME są zmienne.
Sprawdziliśmy ustawienia regionalne w komputerze oraz stworzył mały test aplikacji do wyświetlania ustawienia komputera z .NET oba te są określone jako formatów brytyjskich kod dla aplikacji testowej:
label1.Text = DateTime.Now.ToString();
label2.Text = DateTime.Now.ToString("dd MMM yyyy");
label3.Text = DateTime.Now.ToShortDateString();
label4.Text = Thread.CurrentThread.CurrentCulture.EnglishName;
wiem, że Mogę wymienić ToShortDateString()
na ToString("dd/MM/yyyy")
, aby wymusić prawidłowy format, ale moje pytanie brzmi: dlaczego tak się dzieje?
Czy ma to coś wspólnego z uaktualnieniem systemu Windows 7? lub SCCM?
Dzięki z góry
Jaki jest twój "CurrentCulture"? Czy to jest 'en-GB' lub' en-US'? –
_ "Wiem, że mogę zastąpić ToShortDateString() z ToString (" dd/MM/rrrr "), aby wymusić prawidłowy format" _ To nie jest poprawne, 'ToString (" dd/MM/rrrr ")' będzie również używaj separatora dat istniejącej kultury zamiast '/'. –
O ile mogę powiedzieć, że wszystkie komputery używają en-GB – Tony