W strukturze DateTime istnieje metoda ParseExact() ma ona za zadanie zmianę typu z string na typ DateTime. Metoda ta ma tą zaletę, że możemy w niej podać format daty którą zmieniamy. Zobaczmy przykład:
Mamy datę w formacie dd.MM.yyyy czyli dzień, miesiąc, rok zapisaną w zmiennej typu string. Spróbujmy przekształcić ja na typ DateTime za pomocą metody Convert.ToDateTime().

using System;
   class Program {
      static void Main() {
        string date = "29.03.2011";
        DateTime convert_date= Convert.ToDateTime(date);
        Console.WriteLine(convert_date.ToShortDateString());
        Console.ReadLine();
}
}

Kompilator zgłosi nam wyjątek:

konwersja daty

Rys. Wyjątek zgłoszony przez kompilator

Metoda Convert.ToDateTime() oczekuje na dane wejściowe w formacie MM.dd.yyyy czyli miesiąc dzień rok a my mamy format dzień miesiąc rok.
Spróbujmy użyć metody DateTime.TryParse():

using System;
class Program {
   static void Main() {
     string date = "29.03.2011";
     DateTime convert_date ;
     DateTime.TryParse(date, out convert_date);
     Console.WriteLine(convert_date.ToShortDateString());
     Console.ReadLine();
}
}

Rezultat działania aplikacji:

konwersja daty2

Rys. Rezultat działania aplikacji

Używając metody DateTime.TryParse() nie udało nam się przekształcić typu danych.

Aby wykonać tą operację poprawnie musimy użyć metody: DateTime.ParseExact(). Musimy dodać przestrzeń nazw System.Globalization.

Konstrukcja metody

DateTime.ParseExact(zmiennaDoPrzekształcenia, format daty, informacja o regionie)

Na podstawie informacji o regionie wyznaczany jest format daty.

Kod programu:

using System;
using System.Globalization;
class Program {
   static void Main() {
       string date = "29.03.2011";
       DateTime convert_date = DateTime.ParseExact(date, "dd.MM.yyyy", CultureInfo.InvariantCulture);
       Console.WriteLine(convert_date.ToShortDateString());
       Console.ReadLine();
}
}

Rezultat działania aplikacji:

konwersja daty3

Rys. Rezultat działania aplikacji

Dzięki metodzie DateTime.ParseExact() udało się przekształcić dane z typu string na typ DateTime.

Podsumowanie:
Gdy mamy do zmiany datę w niestandardowym formacie możemy użyć metody DateTime.ParseExact()