2008-10-24 9 views

Odpowiedz

12

Zastosowanie DateTime.ParseExact:

string str = "24/10/2008"; 
DateTime dt = DateTime.ParseExact(str, "dd/MM/yyyy", 
            Thread.CurrentThread.CurrentCulture); 

(Należy wziąć pod uwagę to, co kultura rzeczywiście chcesz przeanalizować go, co prawda).

EDIT: Inne odpowiedzi określono "null" jako trzeci parametr - to jest równoważne użyciu Thread.CurrentThread.CurrentCulture.

Dla innych formatów, patrz "Custom Date and Time Format Strings" w witrynie MSDN.

0

spróbować czegoś jak

DateTime date = System.DateTime.ParseExact(str, "dd/MM/yyyy", null); 

Na czas ten może działać

DateTime date = System.DateTime.ParseExact(str, "HH:mm:ss", null); 
0
string str = "24/10/2008"; 
DateTime dt = Convert.ToDateTime(str); 
4

Jeśli nie znasz formatu, przeznaczenie:

DateTime d = DateTime.Parse(dateString); 

Ten próbuje przeanalizuj ciąg znaków reprezentujący datę i godzinę, używając parametru for zasady maty aktualnej kultury (np. Angielski (USA) "en-US", niemiecki "de-DE", ...). Próbuje zignorować nierozpoznane dane i wypełnia brakujące wartości dla roku, miesiąca i dnia z bieżącą datą (jeśli analizuje tylko ciąg zawierający np. Czas).

Jeśli wiesz, że stosowane kultura ciąg różni się od obecnego, można określić kulturę używać:

CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); 
DateTime d = DateTime.Parse(dateString, culture); 

Należy zawsze dobrze suround konwersję przez blok try-catch, ponieważ ciąg musi być zgodny z rozpoznanym wzorcem. Alternatywnie można również przetestować poprawność ciągu za pomocą metody DateTime.TryParse(dateString, out dateTime), która zwraca wartość true w przypadku powodzenia, a wynik w postaci dateTime; lub fałszywie inaczej.

Jeśli znasz dokładny format, można użyć

DateTime d = DateTime.ParseExact(dateString, "dd/MM/yyyy", null); 

(Zobacz Custom Date and Time Format Strings ze strony MSDN dla innych ciągów format).

3

Proponuję również przejrzeć DateTime.TryParse, jeśli nie masz pewności, w jakim formacie będzie łańcuch daty. W ten sposób unikniesz przekazywania bardzo drogich wyjątków w procedurze Parse.

Chciałbym również drugie zalecenie Jon Skeet do korzystania DateTime.ParseExact jeśli zrobić wiedzieć dokładnie jakim formacie data będzie za każdym razem.

+1

Istnieje również .TryParseExact(), aby uzyskać najlepsze z obu światów. –