Złe formatowanie string do DateTime w Windows 10

0

Mam problem z formatowaniem string do DateTime w Windows 10 Pro w wersji polskiej.

string time = "2016-11-04 12:30:00";
DateTime dt = DateTime.ParseExact(time,"yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

Chcę żeby mi zwracał w formacie 2016-11-04 1200.
Zawsze zwraca mi wynik w formacie 04.11.2016 1200. Próbowałem z różnymi opcjami, zawsze ten sam rezultat.

Z góry dziękuje za pomoc.
Pozdrawiam
PiK

0

Łał, w Windows 10 naprawili wreszcie formatowanie daty po polsku?

Gdzie Ci zwraca ten wynik, bo tutaj to ja widzę tylko parsowanie...

0

Format daty zależy od ustawień regionalnych w systemie ale możesz w .ToString() ustalić samemu format.

string time = "2016-11-04 12:30:00";
DateTime dt = DateTime.ParseExact(time, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
0

Ale potrzebuję przekazać jako DateTime i tu jest problem.

2

Ale DateTime masz dobrze sparsowane, możesz to nawet sprawdzić w propertisach DateTime że w polach Day, Year itd. masz poprawne wartości. Wygląda na to że problem jest gdzieś indziej.

0

@DibbyDum pisze dobrze, datetime masz poprawnie stworzone. Masz problem przy wyswietlaniu bo pewnie nie ustawiasz "kultury" i uzywa windowsowa ktora Ci zmienia wyswietlanie

0

Witam,

Zobacz może czy masz ustawiony Windows 10 na zwracanie tych danych "po polsku", miałem kilka tygodni temu przypadek że Windows 10 po którejś z aktualizacji przestawił się z UK na US i był problem.

Pozdrawiam,

mr-owl

0
piniokp napisał(a):

Ale potrzebuję przekazać jako DateTime i tu jest problem.

To chcesz przekazać DateTime czy tekstową reprezentację daty?

0

Chcę wartość ze string przekazać do DateTime

1

No to przecież to robisz. Datę zapisaną w stringu parsujesz (ParseExact) do DateTime. Czego chcesz więcej? DateTime to typ, który ma w sobie wszystkie składowe daty i czasu: rok, miesiąc, dzień, godzinę, minutę, sekundę, milisekundę. Po ParseExact masz to wszystko już w DateTime.

Jeśli zrobisz DateTime.ToString() (lub podejrzysz w kompilatorze - to to samo), to zobaczysz datę z DateTime sformatowaną zgodnie z Twoim formatem daty ustawionym globalnie w systemie operacyjnym. Czego nie wiesz jeszcze?

0

Problem w tym że zwraca mi wynik w złym formacie dd.MM.yyyy

5

Gdzie Ci zwraca ten wynik? Pokaż ten kod, który Ci zwraca taki wynik, jak już proszono tu trzy razy. Na razie pokazałeś tylko kod parsujący.

0

Witam,

Zobacz to:

            var time = "2016-11-04 12:30:00";
            var dt = DateTime.ParseExact(time, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

            var sb = new StringBuilder();
            sb.Append("CultureInfo.InvariantCulture\t");
            sb.AppendLine(dt.ToString(CultureInfo.InvariantCulture));
            sb.Append("CultureInfo.CurrentCulture\t");
            sb.AppendLine(dt.ToString(CultureInfo.CurrentCulture));
            sb.Append("CultureInfo.CurrentUICulture\t");
            sb.AppendLine(dt.ToString(CultureInfo.CurrentUICulture));
            sb.Append("new CultureInfo(\"en-US\")\t");
            sb.AppendLine(dt.ToString(new CultureInfo("en-US")));
            sb.Append("new CultureInfo(\"en-GB\")\t");
            sb.AppendLine(dt.ToString(new CultureInfo("en-GB")));
            sb.Append("new CultureInfo(\"pl-PL\")\t");
            sb.AppendLine(dt.ToString(new CultureInfo("pl-PL")));
            sb.Append("yyyy-MM-dd HH:mm:ss\t");
            sb.AppendLine(dt.ToString("yyyy-MM-dd HH:mm:ss"));
            
            MessageBox.Show(sb.ToString());

user image

Pozdrawiam,

mr-owl

1 użytkowników online, w tym zalogowanych: 0, gości: 1