Jak przekonwertować ciąg na format DateTime? Na przykład, gdybym miał ciąg jak:Format daty z łańcucha?
"24/10/2008"
Jak mogę dostać, że do formatu DateTime?
Jak przekonwertować ciąg na format DateTime? Na przykład, gdybym miał ciąg jak:Format daty z łańcucha?
"24/10/2008"
Jak mogę dostać, że do formatu DateTime?
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.
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);
string str = "24/10/2008";
DateTime dt = Convert.ToDateTime(str);
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).
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.
Istnieje również .TryParseExact(), aby uzyskać najlepsze z obu światów. –