2012-09-08 19 views
8

Muszę przekonwertować format "28/08/2012" na MM/dd/YYYY, co oznacza "08.08.2012".
Jak mogę to zrobić?Konwersja dd/MM/rrrr do MM/dd/RRRR

Używam poniżej kodu, ale rzucił mi wyjątek.

DateTime.ParseExact("28/08/2012", "ddMMyyyy", CultureInfo.InvariantCulture) 

Odpowiedz

23

ale rzucił wyjątek mi

Problem:

Twoja data zawiera / separator ("28/08/2012") i nie dają, że w dacie formacie string ("ddMMyyyy").

Rozwiązanie:

Należy "dd/MM/yyyy".

ten sposób

DateTime.ParseExact("28/08/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture) 
         .ToString("MM/dd/yyyy", CultureInfo.InvariantCulture); 

Po zrobieniu że otrzymamy obiekt DateTime ze swoimi zaludnionych terminach, która przedostaje się do łańcucha przy użyciu .ToString() z datą żądanego formatu "MM/dd/yyyy" i informacją opcjonalnie kultury CultureInfo.InvariantCulture.

+0

Chcę retrivr format string –

+0

Tak to właśnie to zrobi. Najpierw przekształci to w DateTime, a następnie ponownie w ciąg znaków –

+0

@LajjaThaker: Przeczytaj zaktualizowaną odpowiedź. –

0

Ponieważ oryginalna data jest w kulturze en-GB, można utworzyć obiekt CultureInfo i przeanalizować w naturalny sposób jego numer DateTime.

string date = "28/08/2012"; 
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"); 
Convert.ToDateTime(date,ci.DateTimeFormat).ToString("d");//short date pattern 

(OR)

DateTime.Parse(date,ci.DateTimeFormat).ToString("d");