.NET Framework
DateTime-Analyse
Suche…
ParseExact
var dateString = "2015-11-24";
var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);
24.11.2015 12:00:00 Uhr
Beachten Sie, dass die Übergabe von CultureInfo.CurrentCulture
als dritter Parameter mit der Übergabe von null
identisch ist. Oder Sie können eine bestimmte Kultur übergeben.
Zeichenketten formatieren
Die Eingabezeichenfolge kann ein beliebiges Format haben, das mit der Formatzeichenfolge übereinstimmt
var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);
24.11.2015 12:00:00 Uhr
Alle Zeichen, die keine Formatbezeichner sind, werden als Literale behandelt
var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);
24.11.2015 12:00:00 Uhr
Der Fall ist für Formatbezeichner wichtig
var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);
24.11.2015 11:01:30 Uhr
Beachten Sie, dass die Monats- und Minutenwerte in die falschen Ziele geparst wurden.
Einzelzeichen-Zeichenfolgen müssen eines der Standardformate sein
var date = DateTime.ParseExact("11/24/2015", "d", new CultureInfo("en-US"));
var date = DateTime.ParseExact("2015-11-24T10:15:45", "s", null);
var date = DateTime.ParseExact("2015-11-24 10:15:45Z", "u", null);
Ausnahmen
ArgumentNullException
var date = DateTime.ParseExact(null, "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", null, null);
FormatException
var date = DateTime.ParseExact("", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "", null);
var date = DateTime.ParseExact("2015-0C-24", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "yyyy-QQ-dd", null);
// Single-character format strings must be one of the standard formats
var date = DateTime.ParseExact("2015-11-24", "q", null);
// Format strings must match the input exactly* (see next section)
var date = DateTime.ParseExact("2015-11-24", "d", null); // Expects 11/24/2015 or 24/11/2015 for most cultures
Umgang mit mehreren möglichen Formaten
var date = DateTime.ParseExact("2015-11-24T10:15:45",
new [] { "s", "t", "u", "yyyy-MM-dd" }, // Will succeed as long as input matches one of these
CultureInfo.CurrentCulture, DateTimeStyles.None);
Umgang mit kulturellen Unterschieden
var dateString = "10/11/2015";
var date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-US"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
Tag: 11; Monat: 10
date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
Tag: 10; Monat: 11
TryParse
Diese Methode akzeptiert eine Zeichenfolge als Eingabe, versucht sie in eine DateTime
zu parsen und gibt ein boolesches Ergebnis zurück, das den Erfolg oder Misserfolg angibt. Wenn der Aufruf erfolgreich ist, wird die als out
Parameter übergebene Variable mit dem geparsten Ergebnis aufgefüllt.
Wenn die Analyse fehlschlägt, wird die als out
Parameter übergebene Variable auf den Standardwert DateTime.MinValue
.
TryParse (String, out DateTime)
DateTime parsedValue;
if (DateTime.TryParse("monkey", out parsedValue))
{
Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}
Diese Methode versucht, die Eingabezeichenfolge basierend auf den regionalen Systemeinstellungen und bekannten Formaten wie ISO 8601 und anderen gängigen Formaten zu analysieren.
DateTime.TryParse("11/24/2015 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24T14:28:42", out parsedValue); // true
DateTime.TryParse("Sat, 24 Nov 2015 14:28:42", out parsedValue); // true
Da diese Methode keine Kulturinformationen akzeptiert, verwendet sie das Systemgebietsschema. Dies kann zu unerwarteten Ergebnissen führen.
// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);
Falsch
// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);
Falsch
// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);
Wahr
Wenn Sie sich in den USA aufhalten, werden Sie vielleicht überrascht sein, dass das geparste Ergebnis der 10. November und nicht der 11. Oktober ist.
TryParse (String, IFormatProvider, DateTimeStyles, outTime)
if (DateTime.TryParse(" monkey ", new CultureInfo("en-GB"),
DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out parsedValue)
{
Console.WriteLine("Apparently, ' monkey ' is a date/time value. Who knew?");
}
Im Gegensatz zu seiner Geschwistermethode können bei dieser Überladung eine bestimmte Kultur und ein bestimmter Stil angegeben werden. Das Übergeben von null
für den Parameter IFormatProvider
verwendet die IFormatProvider
.
Ausnahmen
Beachten Sie, dass diese Methode unter bestimmten Bedingungen eine Ausnahme auslösen kann. Diese beziehen sich auf die für diese Überladung eingeführten Parameter: IFormatProvider
und DateTimeStyles
.
-
NotSupportedException
:IFormatProvider
gibt eine neutrale Kultur an -
ArgumentException
:DateTimeStyles
ist keine gültige Option oder enthält inkompatible Flags wieAssumeLocal
undAssumeUniversal
.
TryParseExact
Diese Methode verhält sich wie eine Kombination aus TryParse
und ParseExact
: Sie ermöglicht die Angabe von benutzerdefinierten Formaten und gibt ein boolesches Ergebnis zurück, das auf Erfolg oder Misserfolg hinweist, und gibt keine Ausnahme aus, wenn die Analyse fehlschlägt.
TryParseExact (Zeichenfolge, Zeichenfolge, IFormatProvider, DateTimeStyles, outTime)
Diese Überladung versucht, die Eingabezeichenfolge anhand eines bestimmten Formats zu analysieren. Die Eingabezeichenfolge muss diesem Format entsprechen, damit sie analysiert werden kann.
DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true
TryParseExact (string, string [], IFormatProvider, DateTimeStyles, outTime)
Diese Überladung versucht, die Eingabezeichenfolge mit einem Array von Formaten zu analysieren. Die Eingabezeichenfolge muss mindestens einem Format entsprechen, damit analysiert werden kann.
DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true