2011-07-28 10 views

Odpowiedz

9

Daty same w sobie nie mają formatów , mają format. Można analizować ciąg do DateTime analizując go w formacie dd/MM/yyyy a następnie przekonwertować na ciąg znaków w formacie yyyyMMdd:

DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy", 
            CultureInfo.InvariantCulture); 

string reformatted = date.ToString("yyyyMMdd", CultureInfo.InvariantCulture); 

albo w VB:

Dim date as DateTime = DateTime.ParseExact(text, "dd/MM/yyyy", CultureInfo.InvariantCulture) 
Dim reformatted as String = date.ToString("yyyyMMdd", CultureInfo.InvariantCulture) 

(I upewnij się, że masz import do System.Globalization.)

Najlepiej jednak zachować go jako plik DateTime (lub podobny) tak długo, jak to możliwe.

+0

Jon, Tylko ciekaw tego. Dlaczego nie można użyć metody "String.Format"? – reggie

+1

@reggie: Dla drugiej linii? Mógł, ale byłoby to więcej pracy IMO. Po co określać specyfikator formatu złożonego ciągu, gdy chcesz sformatować pojedynczą wartość? –

+0

Dzięki za podpowiedź, druga linia jest tym, czego mi brakowało! –

0

Użyj metody DateTime.ParseExact, aby przeanalizować datę, a następnie użyj DateTimeObj.ToString("yyyyMMdd").

DaTeTime.ParseExact

3
CDate(Datetext).ToString("yyyyMMdd") 
+0

Ta odpowiedź może się nie udać w zależności od kultury. Dlatego odpowiedź Jona jest lepsza niż ta. Na przykład, jak zdecydować, czy 10/12/2017 jest 10 grudnia lub 12 października bez ParseExact? – Nizam