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 wie AssumeLocal und AssumeUniversal .

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow