DateTime.ParseExact Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Konvertiert die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit in das DateTime entsprechende Format. Das Format der Zeichenfolgendarstellung muss mit einem angegebenen Format übereinstimmen, oder eine Ausnahme wird ausgelöst.
Überlädt
| Name | Beschreibung |
|---|---|
| ParseExact(String, String, IFormatProvider) |
Wandelt die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit mithilfe der angegebenen Format- und kulturspezifischen Formatinformationen in das DateTime entsprechende Format um. Das Format der Zeichenfolgendarstellung muss exakt mit dem angegebenen Format übereinstimmen. |
| ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) |
Wandelt die angegebene Span-Darstellung eines Datums und einer Uhrzeit mithilfe des angegebenen Formats, der kulturspezifischen Formatinformationen und der Formatvorlage in das DateTime entsprechende Format um. Das Format der Zeichenfolgendarstellung muss genau mit dem angegebenen Format übereinstimmen, oder eine Ausnahme wird ausgelöst. |
| ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) |
Konvertiert die angegebene Spannweitendarstellung eines Datums und einer Uhrzeit in seine DateTime Entsprechung mithilfe des angegebenen Arrays von Formaten, kulturspezifischen Formatinformationen und Formatvorlagen. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate entsprechen, oder eine Ausnahme wird ausgelöst. |
| ParseExact(String, String, IFormatProvider, DateTimeStyles) |
Wandelt die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit mithilfe des angegebenen Formats, der kulturspezifischen Formatinformationen und der Formatvorlage in das DateTime entsprechende Format um. Das Format der Zeichenfolgendarstellung muss genau mit dem angegebenen Format übereinstimmen, oder eine Ausnahme wird ausgelöst. |
| ParseExact(String, String[], IFormatProvider, DateTimeStyles) |
Konvertiert die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit in seine DateTime Entsprechung mithilfe des angegebenen Arrays von Formaten, kulturspezifischen Formatinformationen und Formatvorlagen. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate entsprechen, oder eine Ausnahme wird ausgelöst. |
Hinweise
Von Bedeutung
Ären in den japanischen Kalendern basieren auf der Herrschaft des Kaisers und werden daher voraussichtlich wechseln. Beispielsweise markierte der 1. Mai 2019 den Anfang der Reiwa-Ära in der JapaneseCalendar und JapaneseLunisolarCalendar. Eine solche Änderung des Zeitalters wirkt sich auf alle Anwendungen aus, die diese Kalender verwenden. Unter Handling a new era in the Japanese calendar in .NET (Umgang mit einem neuen Zeitabschnitt im japanischen Kalender in .NET) finden Sie weitere Informationen und wie Sie bestimmen können, ob Ihre Anwendungen ebenfalls betroffen sind. Informationen zum Testen Ihrer Anwendungen auf Windows-Systemen, um ihre Bereitschaft für die Änderung der Ära sicherzustellen, finden Sie unter "Vorbereiten Ihrer Anwendung für die Änderung im japanischen Zeitalter". Features in .NET, die Kalender mit mehreren Epochen unterstützen und bewährte Methoden beim Arbeiten mit Kalendern, die mehrere Epochen unterstützen, finden Sie unter Arbeiten mit Eras.
ParseExact(String, String, IFormatProvider)
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
Wandelt die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit mithilfe der angegebenen Format- und kulturspezifischen Formatinformationen in das DateTime entsprechende Format um. Das Format der Zeichenfolgendarstellung muss exakt mit dem angegebenen Format übereinstimmen.
public:
static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider);
public static DateTime ParseExact(string s, string format, IFormatProvider provider);
public static DateTime ParseExact(string s, string format, IFormatProvider? provider);
static member ParseExact : string * string * IFormatProvider -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider) As DateTime
Parameter
- s
- String
Eine Zeichenfolge, die ein Datum und eine Uhrzeit enthält, die konvertiert werden soll.
- format
- String
Ein Formatbezeichner, der das erforderliche Format definiert.s Weitere Informationen finden Sie im Abschnitt "Hinweise".
- provider
- IFormatProvider
Ein Objekt, das kulturspezifische Formatinformationen zu s.
Gibt zurück
Ein Objekt, das dem Datum und der Uhrzeit entspricht, das in s, wie angegeben durch format und provider.
Ausnahmen
s oder format ist null.
s oder format ist eine leere Zeichenfolge.
- oder -
s enthält kein Datum und eine Uhrzeit, die dem angegebenen formatMuster entspricht.
- oder -
Die Stundenkomponente und der AM/PM-Kennzeichner s stimmen nicht überein.
Beispiele
Im folgenden Beispiel wird die ParseExact Methode veranschaulicht.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string dateString, format;
DateTime result;
CultureInfo provider = CultureInfo.InvariantCulture;
// Parse date-only value with invariant culture.
dateString = "06/15/2008";
format = "d";
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
// Parse date-only value without leading zero in month using "d" format.
// Should throw a FormatException because standard short date pattern of
// invariant culture requires two-digit month.
dateString = "6/15/2008";
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
// Parse date and time with custom specifier.
dateString = "Sun 15 Jun 2008 8:30 AM -06:00";
format = "ddd dd MMM yyyy h:mm tt zzz";
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
// Parse date and time with offset but without offset's minutes.
// Should throw a FormatException because "zzz" specifier requires leading
// zero in hours.
dateString = "Sun 15 Jun 2008 8:30 AM -06";
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
dateString = "15/06/2008 08:30";
format = "g";
provider = new CultureInfo("fr-FR");
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
// Parse a date that includes seconds and milliseconds
// by using the French (France) and invariant cultures.
dateString = "18/08/2015 06:30:15.006542";
format = "dd/MM/yyyy HH:mm:ss.ffffff";
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
}
}
// The example displays the following output:
// 06/15/2008 converts to 6/15/2008 12:00:00 AM.
// 6/15/2008 is not in the correct format.
// Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
// Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
// 15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
// 18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
open System
open System.Globalization
[<EntryPoint>]
let main _ =
let provider = CultureInfo.InvariantCulture
// Parse date-only value with invariant culture.
let dateString = "06/15/2008"
let format = "d"
try
let result = DateTime.ParseExact(dateString, format, provider)
printfn $"{dateString} converts to {result}."
with :? FormatException ->
printfn $"{dateString} is not in the correct format."
// Parse date-only value without leading zero in month using "d" format.
// Should throw a FormatException because standard short date pattern of
// invariant culture requires two-digit month.
let dateString = "6/15/2008"
try
let result = DateTime.ParseExact(dateString, format, provider)
printfn $"{dateString} converts to {result}."
with :? FormatException ->
printfn $"{dateString} is not in the correct format."
// Parse date and time with custom specifier.
let dateString = "Sun 15 Jun 2008 8:30 AM -06:00"
let format = "ddd dd MMM yyyy h:mm tt zzz"
try
let result = DateTime.ParseExact(dateString, format, provider)
printfn $"{dateString} converts to {result}."
with :? FormatException ->
printfn $"{dateString} is not in the correct format."
// Parse date and time with offset but without offset's minutes.
// Should throw a FormatException because "zzz" specifier requires leading
// zero in hours.
let dateString = "Sun 15 Jun 2008 8:30 AM -06"
try
let result = DateTime.ParseExact(dateString, format, provider)
printfn $"{dateString} converts to {result}."
with :? FormatException ->
printfn $"{dateString} is not in the correct format."
let dateString = "15/06/2008 08:30"
let format = "g"
let provider = CultureInfo "fr-FR"
try
let result = DateTime.ParseExact(dateString, format, provider)
printfn $"{dateString} converts to {result}."
with :? FormatException ->
printfn $"{dateString} is not in the correct format."
// Parse a date that includes seconds and milliseconds
// by using the French (France) and invariant cultures.
let dateString = "18/08/2015 06:30:15.006542"
let format = "dd/MM/yyyy HH:mm:ss.ffffff"
try
let result = DateTime.ParseExact(dateString, format, provider)
printfn $"{dateString} converts to {result}."
with :? FormatException ->
printfn $"{dateString} is not in the correct format."
0
// The example displays the following output:
// 06/15/2008 converts to 6/15/2008 12:00:00 AM.
// 6/15/2008 is not in the correct format.
// Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
// Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
// 15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
// 18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
Imports System.Globalization
Module Example
Public Sub Main()
Dim dateString, format As String
Dim result As Date
Dim provider As CultureInfo = CultureInfo.InvariantCulture
' Parse date-only value with invariant culture.
dateString = "06/15/2008"
format = "d"
Try
result = Date.ParseExact(dateString, format, provider)
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
Catch e As FormatException
Console.WriteLine("{0} is not in the correct format.", dateString)
End Try
' Parse date-only value without leading zero in month using "d" format.
' Should throw a FormatException because standard short date pattern of
' invariant culture requires two-digit month.
dateString = "6/15/2008"
Try
result = Date.ParseExact(dateString, format, provider)
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
Catch e As FormatException
Console.WriteLine("{0} is not in the correct format.", dateString)
End Try
' Parse date and time with custom specifier.
dateString = "Sun 15 Jun 2008 8:30 AM -06:00"
format = "ddd dd MMM yyyy h:mm tt zzz"
Try
result = Date.ParseExact(dateString, format, provider)
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
Catch e As FormatException
Console.WriteLine("{0} is not in the correct format.", dateString)
End Try
' Parse date and time with offset but without offset's minutes.
' Should throw a FormatException because "zzz" specifier requires leading
' zero in hours.
dateString = "Sun 15 Jun 2008 8:30 AM -06"
Try
result = Date.ParseExact(dateString, format, provider)
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
Catch e As FormatException
Console.WriteLine("{0} is not in the correct format.", dateString)
End Try
' Parse a date string using the French (France) culture.
dateString = "15/06/2008 08:30"
format = "g"
provider = New CultureInfo("fr-FR")
Try
result = Date.ParseExact(dateString, format, provider)
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
Catch e As FormatException
Console.WriteLine("{0} is not in the correct format.", dateString)
End Try
' Parse a date that includes seconds and milliseconds
' by using the French (France) and invariant cultures.
dateString = "18/08/2015 06:30:15.006542"
format = "dd/MM/yyyy HH:mm:ss.ffffff"
Try
result = Date.ParseExact(dateString, format, provider)
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
Catch e As FormatException
Console.WriteLine("{0} is not in the correct format.", dateString)
End Try
End Sub
End Module
' The example displays the following output:
' 06/15/2008 converts to 6/15/2008 12:00:00 AM.
' 6/15/2008 is not in the correct format.
' Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
' Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
' 15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
' 18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
Hinweise
Die DateTime.ParseExact(String, String, IFormatProvider) Methode analysiert die Zeichenfolgendarstellung eines Datums, das im durch den format Parameter definierten Format vorliegen muss. Außerdem müssen die <Elemente "Date> " und <"Time> " der Zeichenfolgendarstellung eines Datums und einer Uhrzeit in der angegebenen Reihenfolge formatangezeigt werden, und die s keinen anderen Leerraum aufweisen als dies formatzulässig ist. Wenn format ein Datum ohne Zeitelement definiert und der Analysevorgang erfolgreich ausgeführt wird, weist der resultierende DateTime Wert eine Mitternachtszeit (00:00:00:00) auf. Wenn format eine Uhrzeit ohne Datumselement definiert und der Analysevorgang erfolgreich ist, weist der resultierende DateTime Wert ein Datum von DateTime.Now.Date.
Wenn s keine Uhrzeit in einer bestimmten Zeitzone und der Analysevorgang erfolgreich ist, lautet DateTimeKind.Unspecifieddie Kind Eigenschaft des zurückgegebenen DateTime Werts . Wenn s die Uhrzeit in einer bestimmten Zeitzone dargestellt wird und format ermöglicht, dass Zeitzoneninformationen vorhanden sind (z. B. entspricht format der Standardformatbezeichner "o", "r" oder "u" oder wenn sie die benutzerdefinierten Formatbezeichner "z", "zz" oder "zzz" enthält), lautet DateTimeKind.Localdie Kind Eigenschaft des zurückgegebenen DateTime Werts .
Der format Parameter ist eine Zeichenfolge, die entweder einen einzelnen Standardformatbezeichner oder einen oder mehrere benutzerdefinierte Formatbezeichner enthält, die das erforderliche Format sdefinieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standard-Datums- und Uhrzeitformatzeichenfolgen oder benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen.
Hinweis
Wenn format es sich um ein benutzerdefiniertes Formatmuster handelt, das keine Datums- oder Uhrzeittrennzeichen (z. B. "yyyyMMdHHmm") enthält, verwenden Sie die invariante Kultur für den provider Parameter und die breiteste Form jedes benutzerdefinierten Formatbezeichners. Wenn Sie z. B. Stunden im Formatmuster angeben möchten, geben Sie das breitere Formular "HH" anstelle des schmaleren Formulars "H" an.
Die speziellen Datums- und Uhrzeitsymbole und Zeichenfolgen (z. B. Namen der Wochentage in einer bestimmten Sprache) s werden durch den provider Parameter definiert, wie das genaue Format, s wenn format es sich um eine Standardformatbezeichnerzeichenfolge handelt. Der provider Parameter kann eine der folgenden Sein:
Ein CultureInfo Objekt, das die kultur darstellt, die zum Interpretieren
sverwendet wird. Das DateTimeFormatInfo von der DateTimeFormat Eigenschaft zurückgegebene Objekt definiert die Symbole und Formatierungen ins.Ein DateTimeFormatInfo Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
Eine benutzerdefinierte IFormatProvider Implementierung, deren GetFormat Methode entweder das CultureInfo Objekt oder das Objekt zurückgibt, das DateTimeFormatInfo Formatierungsinformationen bereitstellt.
Wenn provider ja null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.
Hinweise für Aufrufer
In .NET Framework 4 löst die ParseExact Methode ein FormatException , wenn die zu analysierende Zeichenfolge eine Stundenkomponente und einen AM/PM-Kennzeichner enthält, der nicht in Übereinstimmung ist. In .NET Framework 3.5 und früheren Versionen wird der AM/PM-Kennzeichner ignoriert.
Weitere Informationen
- TryParseExact
- CultureInfo
- DateTimeFormatInfo
- Analysieren von Datums- und Uhrzeitzeichenfolgen im .NET Framework
- Standardformatzeichenfolgen für Datum und Uhrzeiten
- Benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit
Gilt für:
ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
Wandelt die angegebene Span-Darstellung eines Datums und einer Uhrzeit mithilfe des angegebenen Formats, der kulturspezifischen Formatinformationen und der Formatvorlage in das DateTime entsprechende Format um. Das Format der Zeichenfolgendarstellung muss genau mit dem angegebenen Format übereinstimmen, oder eine Ausnahme wird ausgelöst.
public static DateTime ParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider? provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
public static DateTime ParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime
Parameter
- s
- ReadOnlySpan<Char>
Eine Spanne, die die Zeichen enthält, die ein zu konvertierende Datum und eine Uhrzeit darstellen.
- format
- ReadOnlySpan<Char>
Ein Bereich mit den Zeichen, die einen Formatbezeichner darstellen, der das erforderliche Format definiert s.
- provider
- IFormatProvider
Ein Objekt, das kulturspezifische Formatierungsinformationen zu s.
- style
- DateTimeStyles
Eine bitweise Kombination der Enumerationswerte, die zusätzliche Informationen zu sStilelementen, die vorhanden ssein können, oder über die Konvertierung von s einem DateTime Wert. Ein typischer Wert, der angegeben werden soll, ist None.
Gibt zurück
Ein Objekt, das dem Datum und der Uhrzeit entspricht, das in s, wie angegeben durch format, providerund style.
Gilt für:
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
Konvertiert die angegebene Spannweitendarstellung eines Datums und einer Uhrzeit in seine DateTime Entsprechung mithilfe des angegebenen Arrays von Formaten, kulturspezifischen Formatinformationen und Formatvorlagen. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate entsprechen, oder eine Ausnahme wird ausgelöst.
public static DateTime ParseExact(ReadOnlySpan<char> s, string[] formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
public static DateTime ParseExact(ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime
Parameter
- s
- ReadOnlySpan<Char>
Eine Spanne, die die Zeichen enthält, die ein zu konvertierende Datum und eine Uhrzeit darstellen.
- formats
- String[]
Ein Array zulässiger Formate von s.
- provider
- IFormatProvider
Ein Objekt, das kulturspezifische Formatinformationen zu s.
- style
- DateTimeStyles
Eine bitweise Kombination von Enumerationswerten, die das zulässige Format von s. Ein typischer Wert, der angegeben werden soll, ist None.
Gibt zurück
Ein Objekt, das dem Datum und der Uhrzeit entspricht, das in s, wie angegeben durch formats, providerund style.
Gilt für:
ParseExact(String, String, IFormatProvider, DateTimeStyles)
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
Wandelt die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit mithilfe des angegebenen Formats, der kulturspezifischen Formatinformationen und der Formatvorlage in das DateTime entsprechende Format um. Das Format der Zeichenfolgendarstellung muss genau mit dem angegebenen Format übereinstimmen, oder eine Ausnahme wird ausgelöst.
public:
static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact(string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style);
public static DateTime ParseExact(string s, string format, IFormatProvider? provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles) As DateTime
Parameter
- s
- String
Eine Zeichenfolge, die ein Datum und eine Uhrzeit enthält, die konvertiert werden soll.
- format
- String
Ein Formatbezeichner, der das erforderliche Format definiert.s Weitere Informationen finden Sie im Abschnitt "Hinweise".
- provider
- IFormatProvider
Ein Objekt, das kulturspezifische Formatierungsinformationen zu s.
- style
- DateTimeStyles
Eine bitweise Kombination der Enumerationswerte, die zusätzliche Informationen zu sStilelementen, die vorhanden ssein können, oder über die Konvertierung von s einem DateTime Wert. Ein typischer Wert, der angegeben werden soll, ist None.
Gibt zurück
Ein Objekt, das dem Datum und der Uhrzeit entspricht, das in s, wie angegeben durch format, providerund style.
Ausnahmen
s oder format ist null.
s oder format ist eine leere Zeichenfolge.
- oder -
s enthält kein Datum und eine Uhrzeit, die dem angegebenen formatMuster entspricht.
- oder -
Die Stundenkomponente und der AM/PM-Kennzeichner s stimmen nicht überein.
style enthält eine ungültige Kombination von DateTimeStyles Werten. Beispielsweise sowohl AssumeLocal als auch AssumeUniversal.
Beispiele
Im folgenden Beispiel wird die ParseExact(String, String, IFormatProvider) Methode veranschaulicht. Beachten Sie, dass die Zeichenfolge " 5/01/2009 8:30 AM" nicht erfolgreich analysiert werden kann, wenn der styles Parameter gleich ist DateTimeStyles.None , da führende Leerzeichen nicht zulässig formatsind. Darüber hinaus kann die Zeichenfolge "5/01/2009 09:00" nicht erfolgreich mit einer format "MM/dd/yyyyhh:mm" analysiert werden, da die Datumszeichenfolge nicht vor der Monatsnummer mit einer führenden Null steht, wie format erforderlich.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
// Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM";
try {
dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
// Allow a leading space in the date string.
try {
dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
// Use custom formats with M and MM.
dateString = "5/01/2009 09:00";
try {
dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
// Allow a leading space in the date string.
try {
dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
// Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00";
try {
dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
// Allow a leading space in the date string.
try {
dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.AdjustToUniversal);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
// Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z";
try {
dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.None);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
try {
dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.RoundtripKind);
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
}
catch (FormatException) {
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
}
}
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
open System
open System.Globalization
[<EntryPoint>]
let main _ =
let enUS = CultureInfo "en-US"
// Parse date with no style flags.
let dateString = " 5/01/2009 8:30 AM"
try
let dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
try
let dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// Use custom formats with M and MM.
let dateString = "5/01/2009 09:00"
try
let dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
try
let dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string with time zone information.
let dateString = "05/01/2009 01:30:42 PM -05:00"
try
let dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
try
let dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string representing UTC.
let dateString = "2008-06-11T16:11:20.0904778Z"
try
let dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
try
let dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
with :? FormatException ->
printfn $"'{dateString}' is not in an acceptable format."
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization
Module Example
Public Sub Main()
Dim enUS As New CultureInfo("en-US")
Dim dateString As String
Dim dateValue As Date
' Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM"
Try
dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.None)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
' Allow a leading space in the date string.
Try
dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
' Use custom formats with M and MM.
dateString = "5/01/2009 09:00"
Try
dateValue = Date.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
' Allow a leading space in the date string.
Try
dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
' Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00"
Try
dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
' Allow a leading space in the date string.
Try
dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.AdjustToUniversal)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
' Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z"
Try
dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.None)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
Try
dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.RoundtripKind)
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Catch e As FormatException
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End Try
End Sub
End Module
' The example displays the following output:
' ' 5/01/2009 8:30 AM' is not in an acceptable format.
' Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
' Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
' '5/01/2009 09:00' is not in an acceptable format.
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Hinweise
Die DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) Methode analysiert die Zeichenfolgendarstellung eines Datums, das in einem vom format Parameter definierten Format vorliegen muss. Außerdem müssen die Datums- und Uhrzeitelemente s in der angegebenen formatReihenfolge angezeigt werden. Wenn s das Muster des format Parameters nicht übereinstimmt, löst style die Methode eine FormatException. Im Gegensatz dazu analysiert die DateTime.Parse(String, IFormatProvider, DateTimeStyles) Methode die Zeichenfolgendarstellung eines Datums in einem der Formate, die vom Objekt des Formatanbieters DateTimeFormatInfo erkannt werden. Die DateTime.Parse(String, IFormatProvider, DateTimeStyles) Methode ermöglicht außerdem, dass die Datums- und Uhrzeitelemente s in beliebiger Reihenfolge angezeigt werden.
Wenn der s Parameter nur eine Uhrzeit und kein Datum enthält, wird das aktuelle Datum verwendet, es sei denn, der style Parameter enthält das DateTimeStyles.NoCurrentDateDefault Flag, in diesem Fall wird das Standarddatum (DateTime.Date.MinValue) verwendet. Wenn der s Parameter nur ein Datum und keine Uhrzeit enthält, wird Mitternacht (00:00:00) verwendet. Der style Parameter bestimmt außerdem, ob der s Parameter führende, innere oder nachfolgende Leerzeichen enthalten kann.
Wenn s keine Zeitzoneninformationen enthalten sind, lautet DateTimeKind.Unspecifieddie Kind Eigenschaft des zurückgegebenen DateTime Objekts . Dieses Verhalten kann mithilfe des DateTimeStyles.AssumeLocal Flags geändert werden, das einen DateTime Wert zurückgibt, dessen Kind Eigenschaft lautetDateTimeKind.Local, oder mithilfe der FlagsDateTimeStyles.AdjustToUniversal, die DateTimeStyles.AssumeUniversal einen DateTime Wert zurückgibt, dessen Kind Eigenschaft lautetDateTimeKind.Utc. Wenn s Zeitzoneninformationen enthalten sind, wird die Uhrzeit bei Bedarf in die Ortszeit konvertiert, und die Kind Eigenschaft des zurückgegebenen DateTime Objekts wird auf .DateTimeKind.Local Dieses Verhalten kann mithilfe des DateTimeStyles.RoundtripKind Flags geändert werden, um koordinierte Weltzeit (COORDINATED Universal Time, UTC) nicht in eine lokale Zeit zu konvertieren und die Kind Eigenschaft auf festzulegen DateTimeKind.Utc.
Der format Parameter definiert das erforderliche Muster des s Parameters. Sie kann aus einer oder mehreren benutzerdefinierten Formatbezeichnern aus der Tabelle " Benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen " oder einem einzelnen Standardformatbezeichner bestehen, der ein vordefiniertes Muster identifiziert, aus der Tabelle " Zeichenfolgen im Standarddatums- und Uhrzeitformat" .
Wenn Sie keine Datums- oder Uhrzeittrennzeichen in einem benutzerdefinierten Formatmuster verwenden, verwenden Sie die invariante Kultur für den provider Parameter und die breiteste Form der einzelnen benutzerdefinierten Formatbezeichner. Wenn Sie z. B. Stunden im Muster angeben möchten, geben Sie das breitere Formular "HH" anstelle des schmaleren Formulars "H" an.
Hinweis
Anstatt zu verlangen, dass dies s einem einzigen Format entspricht, damit der Analysevorgang erfolgreich ausgeführt werden kann, können Sie die DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) Methode aufrufen und mehrere zulässige Formate angeben. Dadurch wird der Analysevorgang wahrscheinlicher erfolgreich ausgeführt.
Der styles Parameter enthält ein oder mehrere Member der DateTimeStyles Enumeration, die bestimmen, ob und wo Leerzeichen nicht definiert format werden s können, und die das genaue Verhalten des Analysevorgangs steuern. In der folgenden Tabelle wird beschrieben, wie sich jedes Element der DateTimeStyles Enumeration auf den Vorgang der ParseExact(String, String, IFormatProvider, DateTimeStyles) Methode auswirkt.
| DateTimeStyles-Mitglied | Beschreibung |
|---|---|
| AdjustToUniversal | Analysiert s und konvertiert es, falls erforderlich, in UTC. Wenn s ein Zeitzonenoffset enthält oder s keine Zeitzoneninformationen enthält, aber styles das DateTimeStyles.AssumeLocal-Flag enthält, analysiert die Methode die Zeichenfolge, ruft ToUniversalTime auf, um den zurückgegebenen DateTime-Wert in UTC zu konvertieren, und legt die Kind-Eigenschaft auf DateTimeKind.Utc fest. Wenn s angegeben wird, dass es UTC darstellt oder keine s Zeitzoneninformationen enthält, aber styles das DateTimeStyles.AssumeUniversal Flag enthält, analysiert die Methode die Zeichenfolge, führt keine Zeitzonenkonvertierung für den zurückgegebenen DateTime Wert durch und legt die Kind Eigenschaft auf DateTimeKind.Utc. In allen anderen Fällen hat das Flag keine Auswirkung. |
| AllowInnerWhite | Gibt an, dass leerzeichen, von format denen nicht definiert wird, zwischen einem einzelnen Datums- oder Uhrzeitelement angezeigt werden können. |
| AllowLeadingWhite | Gibt an, dass leerzeichen nicht definiert format werden können, die am Anfang von s. |
| AllowTrailingWhite | Gibt an, dass Leerzeichen, die format nicht definiert werden, am Ende von sangezeigt werden können. |
| AllowWhiteSpaces | Gibt an, dass s führende, innere und nachfolgende Leerzeichen enthalten können, die nicht durch definiert werden format. |
| AssumeLocal | Gibt an, dass bei s fehlenden Zeitzoneninformationen davon ausgegangen wird, dass sie eine Ortszeit darstellt. Sofern das DateTimeStyles.AdjustToUniversal-Flag nicht gegeben ist, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Werts auf DateTimeKind.Local gesetzt. |
| AssumeUniversal | Gibt an, dass wenn s keine Zeitzoneninformationen enthält, angenommen wird, dass diese UTC darstellen. Sofern das DateTimeStyles.AdjustToUniversal Flag nicht vorhanden ist, konvertiert die Methode den zurückgegebenen DateTime Wert von UTC in ortszeit und legt dessen Kind Eigenschaft auf DateTimeKind.Local. |
| NoCurrentDateDefault | Wenn s Uhrzeit ohne Datumsinformationen enthalten ist, wird das Datum des Rückgabewerts auf .DateTime.MinValue.Date |
| None | Der s Parameter wird mithilfe von Standardwerten analysiert. Es ist kein leerer Leerraum zulässig, der nicht vorhanden format ist. Wenn s keine Datumskomponente vorhanden ist, wird das Datum des zurückgegebenen DateTime Werts auf 1/1/0001 festgelegt. Wenn s keine Zeitzoneninformationen enthalten sind, wird die Kind Eigenschaft des zurückgegebenen DateTime Objekts auf .DateTimeKind.Unspecified Wenn Zeitzoneninformationen vorhanden ssind, wird die Uhrzeit in die Ortszeit konvertiert, und die Kind Eigenschaft des zurückgegebenen DateTime Objekts wird auf DateTimeKind.Localfestgelegt. |
| RoundtripKind | Bei Zeichenfolgen, die Zeitzoneninformationen enthalten, wird versucht, die Konvertierung in ein Wertdatum und eine DateTime Uhrzeit zu verhindern, für die die Kind Eigenschaft festgelegt ist DateTimeKind.Local. Dieses Flag verhindert in erster Linie die Konvertierung von UTC-Zeiten in lokale Zeiten. |
Die speziellen Datums- und Uhrzeitsymbole und Zeichenfolgen (z. B. die Namen der Wochentage in einer bestimmten Sprache) s werden durch den provider Parameter definiert, wie das genaue Format, s wenn format es sich um eine Standardformatbezeichnerzeichenfolge handelt. Der provider Parameter kann eine der folgenden Sein:
Ein CultureInfo Objekt, das die kultur darstellt, die zum Interpretieren
sverwendet wird. Das DateTimeFormatInfo von der DateTimeFormat Eigenschaft zurückgegebene Objekt definiert die Symbole und Formatierungen ins.Ein DateTimeFormatInfo Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
Eine benutzerdefinierte IFormatProvider Implementierung, deren GetFormat Methode entweder das CultureInfo Objekt oder das Objekt zurückgibt, das DateTimeFormatInfo Formatierungsinformationen bereitstellt.
Wenn provider ja null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.
Hinweise für Aufrufer
In .NET Framework 4 löst die ParseExact Methode ein FormatException , wenn die zu analysierende Zeichenfolge eine Stundenkomponente und einen AM/PM-Kennzeichner enthält, der nicht in Übereinstimmung ist. In .NET Framework 3.5 und früheren Versionen wird der AM/PM-Kennzeichner ignoriert.
Weitere Informationen
- TryParseExact
- CultureInfo
- DateTimeFormatInfo
- Analysieren von Datums- und Uhrzeitzeichenfolgen im .NET Framework
- Standardformatzeichenfolgen für Datum und Uhrzeiten
- Benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit
Gilt für:
ParseExact(String, String[], IFormatProvider, DateTimeStyles)
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
- Quelle:
- DateTime.cs
Konvertiert die angegebene Zeichenfolgendarstellung eines Datums und einer Uhrzeit in seine DateTime Entsprechung mithilfe des angegebenen Arrays von Formaten, kulturspezifischen Formatinformationen und Formatvorlagen. Das Format der Zeichenfolgendarstellung muss mindestens einem der angegebenen Formate entsprechen, oder eine Ausnahme wird ausgelöst.
public:
static DateTime ParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact(string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style);
public static DateTime ParseExact(string s, string[] formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles) As DateTime
Parameter
- s
- String
Eine Zeichenfolge, die ein Datum und eine Uhrzeit enthält, die konvertiert werden soll.
- formats
- String[]
Ein Array zulässiger Formate von s. Weitere Informationen finden Sie im Abschnitt "Hinweise".
- provider
- IFormatProvider
Ein Objekt, das kulturspezifische Formatinformationen zu s.
- style
- DateTimeStyles
Eine bitweise Kombination von Enumerationswerten, die das zulässige Format von s. Ein typischer Wert, der angegeben werden soll, ist None.
Gibt zurück
Ein Objekt, das dem Datum und der Uhrzeit entspricht, das in s, wie angegeben durch formats, providerund style.
Ausnahmen
s oder formats ist null.
s ist eine leere Zeichenfolge.
- oder -
ein Element von formats ist eine leere Zeichenfolge.
- oder -
s enthält kein Datum und eine Uhrzeit, die einem Element von formatsentspricht.
- oder -
Die Stundenkomponente und der AM/PM-Kennzeichner s stimmen nicht überein.
style enthält eine ungültige Kombination von DateTimeStyles Werten. Beispielsweise sowohl AssumeLocal als auch AssumeUniversal.
Beispiele
Im folgenden Beispiel wird die DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) Methode verwendet, um sicherzustellen, dass eine Zeichenfolge in einer Reihe möglicher Formate erfolgreich analysiert werden kann.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
"MM/d/yyyy HH:mm:ss.ffffff" };
string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
"5/1/2009 6:32:00", "05/01/2009 06:32",
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
"08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" };
DateTime dateValue;
foreach (string dateString in dateStrings)
{
try {
dateValue = DateTime.ParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None);
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
}
catch (FormatException) {
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
}
}
}
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
// Unable to convert '08/28/2015 16:17:39.125' to a date.
// Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
open System
open System.Globalization
let formats =
[| "M/d/yyyy h:mm:ss tt"; "M/d/yyyy h:mm tt"
"MM/dd/yyyy hh:mm:ss"; "M/d/yyyy h:mm:ss"
"M/d/yyyy hh:mm tt"; "M/d/yyyy hh tt"
"M/d/yyyy h:mm"; "M/d/yyyy h:mm"
"MM/dd/yyyy hh:mm"; "M/dd/yyyy hh:mm"
"MM/d/yyyy HH:mm:ss.ffffff" |]
let dateStrings =
[ "5/1/2009 6:32 PM"; "05/01/2009 6:32:05 PM"
"5/1/2009 6:32:00"; "05/01/2009 06:32"
"05/01/2009 06:32:00 PM"; "05/01/2009 06:32:00"
"08/28/2015 16:17:39.125"; "08/28/2015 16:17:39.125000" ]
for dateString in dateStrings do
try
let dateValue = DateTime.ParseExact(dateString, formats, CultureInfo "en-US", DateTimeStyles.None)
printfn $"Converted '{dateString}' to {dateValue}."
with :? FormatException ->
printfn $"Unable to convert '{dateString}' to a date."
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
// Unable to convert '08/28/2015 16:17:39.125' to a date.
// Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
Imports System.Globalization
Module Example
Public Sub Main()
Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
"M/d/yyyy h:mm", "M/d/yyyy h:mm", _
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
"MM/d/yyyy HH:mm:ss.ffffff" }
Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
"5/1/2009 6:32:00", "05/01/2009 06:32", _
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
"08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" }
Dim dateValue As DateTime
For Each dateString As String In dateStrings
Try
dateValue = DateTime.ParseExact(dateString, formats, _
New CultureInfo("en-US"), _
DateTimeStyles.None)
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
Catch e As FormatException
Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
End Try
Next
End Sub
End Module
' The example displays the following output:
' Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
' Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
' Unable to convert '08/28/2015 16:17:39.125' to a date.
' Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
Hinweise
Die DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) Methode analysiert die Zeichenfolgendarstellung eines Datums, das einem der dem Parameter zugewiesenen formats Muster entspricht. Wenn die Zeichenfolge s keines dieser Muster mit einer der durch den styles Parameter definierten Variationen übereinstimmt, löst die Methode eine FormatException. Abgesehen vom Vergleich s mit mehreren Formatierungsmustern und nicht mit einem einzelnen Formatierungsmuster verhält sich diese Überladung identisch mit der DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) Methode.
Der s Parameter enthält das Zu analysierende Datum und die Uhrzeit. Wenn der s Parameter nur eine Uhrzeit und kein Datum enthält, wird das aktuelle Datum verwendet, es sei denn, der style Parameter enthält das DateTimeStyles.NoCurrentDateDefault Flag, in diesem Fall wird das Standarddatum (DateTime.Date.MinValue) verwendet. Wenn der s Parameter nur ein Datum und keine Uhrzeit enthält, wird Mitternacht (00:00:00) verwendet. Der style Parameter bestimmt außerdem, ob der s Parameter führende, innere oder nachfolgende Leerzeichen enthalten kann, die von einer der Formatzeichenfolgen zulässig formatssind.
Wenn s keine Zeitzoneninformationen enthalten sind, lautet DateTimeKind.Unspecifieddie Kind Eigenschaft des zurückgegebenen DateTime Objekts . Dieses Verhalten kann mithilfe des DateTimeStyles.AssumeLocal Flags geändert werden, das einen DateTime Wert zurückgibt, dessen Kind Eigenschaft lautetDateTimeKind.Local, oder mithilfe der FlagsDateTimeStyles.AdjustToUniversal, die DateTimeStyles.AssumeUniversal einen DateTime Wert zurückgibt, dessen Kind Eigenschaft lautetDateTimeKind.Utc. Wenn s Zeitzoneninformationen enthalten sind, wird die Uhrzeit bei Bedarf in die Ortszeit konvertiert, und die Kind Eigenschaft des zurückgegebenen DateTime Objekts wird auf .DateTimeKind.Local Dieses Verhalten kann mithilfe des DateTimeStyles.RoundtripKind Flags geändert werden, um koordinierte Weltzeit (COORDINATED Universal Time, UTC) nicht in eine lokale Zeit zu konvertieren und die Kind Eigenschaft auf .DateTimeKind.Utc
Der formats Parameter enthält ein Array von Mustern, von denen s einer genau übereinstimmen muss, wenn der Analysevorgang erfolgreich ist. Die Muster im formats Parameter bestehen aus einer oder mehreren benutzerdefinierten Formatbezeichnern aus der Tabelle "Benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen " oder einem einzelnen Standardformatbezeichner, der ein vordefiniertes Muster identifiziert, aus der Tabelle " Standarddatums- und Uhrzeitformatzeichenfolgen" .
Wenn Sie keine Datums- oder Uhrzeittrennzeichen in einem benutzerdefinierten Formatmuster verwenden, verwenden Sie die invariante Kultur für den provider Parameter und die breiteste Form der einzelnen benutzerdefinierten Formatbezeichner. Wenn Sie z. B. Stunden im Muster angeben möchten, geben Sie das breitere Formular "HH" anstelle des schmaleren Formulars "H" an.
Der styles Parameter enthält ein oder mehrere Member der DateTimeStyles Enumeration, die bestimmen, ob und wo Leerzeichen nicht definiert format werden s können, und die das genaue Verhalten des Analysevorgangs steuern. In der folgenden Tabelle wird beschrieben, wie sich jedes Element der DateTimeStyles Enumeration auf den Vorgang der ParseExact(String, String, IFormatProvider, DateTimeStyles) Methode auswirkt.
| DateTimeStyles-Mitglied | Beschreibung |
|---|---|
| AdjustToUniversal | Analysiert s und konvertiert es, falls erforderlich, in UTC. Wenn s ein Zeitzonenoffset enthält oder s keine Zeitzoneninformationen enthält, aber styles das DateTimeStyles.AssumeLocal-Flag enthält, analysiert die Methode die Zeichenfolge, ruft ToUniversalTime auf, um den zurückgegebenen DateTime-Wert in UTC zu konvertieren, und legt die Kind-Eigenschaft auf DateTimeKind.Utc fest. Wenn s angegeben wird, dass es UTC darstellt oder keine s Zeitzoneninformationen enthält, aber styles das DateTimeStyles.AssumeUniversal Flag enthält, analysiert die Methode die Zeichenfolge, führt keine Zeitzonenkonvertierung für den zurückgegebenen DateTime Wert durch und legt die Kind Eigenschaft auf DateTimeKind.Utc. In allen anderen Fällen hat das Flag keine Auswirkung. |
| AllowInnerWhite | Gibt an, dass leerzeichen, von format denen nicht definiert wird, zwischen einem einzelnen Datums- oder Uhrzeitelement angezeigt werden können. |
| AllowLeadingWhite | Gibt an, dass leerzeichen nicht definiert format werden können, die am Anfang von s. |
| AllowTrailingWhite | Gibt an, dass Leerzeichen, die format nicht definiert werden, am Ende von sangezeigt werden können. |
| AllowWhiteSpaces | Gibt an, dass s führende, innere und nachfolgende Leerzeichen enthalten können, die nicht durch definiert werden format. |
| AssumeLocal | Gibt an, dass bei s fehlenden Zeitzoneninformationen davon ausgegangen wird, dass sie eine Ortszeit darstellt. Sofern das DateTimeStyles.AdjustToUniversal-Flag nicht gegeben ist, wird die Kind-Eigenschaft des zurückgegebenen DateTime-Werts auf DateTimeKind.Local gesetzt. |
| AssumeUniversal | Gibt an, dass wenn s keine Zeitzoneninformationen enthält, angenommen wird, dass diese UTC darstellen. Sofern das DateTimeStyles.AdjustToUniversal Flag nicht vorhanden ist, konvertiert die Methode den zurückgegebenen DateTime Wert von UTC in ortszeit und legt dessen Kind Eigenschaft auf DateTimeKind.Local. |
| NoCurrentDateDefault | Wenn s Uhrzeit ohne Datumsinformationen enthalten ist, wird das Datum des Rückgabewerts auf .DateTime.MinValue.Date |
| None | Der s Parameter wird mithilfe von Standardwerten analysiert. Es ist kein leerer Leerraum zulässig, der nicht vorhanden format ist. Wenn s keine Datumskomponente vorhanden ist, wird das Datum des zurückgegebenen DateTime Werts auf 1/1/0001 festgelegt. Wenn s keine Zeitzoneninformationen enthalten sind, wird die Kind Eigenschaft des zurückgegebenen DateTime Objekts auf .DateTimeKind.Unspecified Wenn Zeitzoneninformationen vorhanden ssind, wird die Uhrzeit in die Ortszeit konvertiert, und die Kind Eigenschaft des zurückgegebenen DateTime Objekts wird auf DateTimeKind.Localfestgelegt. |
| RoundtripKind | Bei Zeichenfolgen, die Zeitzoneninformationen enthalten, wird versucht, die Konvertierung in ein Datum und eine Uhrzeit zu verhindern, auf die die Kind Eigenschaft festgelegt ist DateTimeKind.Local. Dieses Flag verhindert in erster Linie die Konvertierung von UTC-Zeiten in lokale Zeiten. |
Die speziellen Datums- und Uhrzeitsymbole und Zeichenfolgen (z. B. die Namen der Wochentage in einer bestimmten Sprache) s werden durch den provider Parameter definiert, wie das genaue Format, s wenn format es sich um eine Standardformatbezeichnerzeichenfolge handelt. Der provider Parameter kann eine der folgenden Sein:
Ein CultureInfo Objekt, das die kultur darstellt, die zum Interpretieren
sverwendet wird. Das DateTimeFormatInfo von der DateTimeFormat Eigenschaft zurückgegebene Objekt definiert die Symbole und Formatierungen ins.Ein DateTimeFormatInfo Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
Eine benutzerdefinierte IFormatProvider Implementierung, deren GetFormat Methode entweder das CultureInfo Objekt oder das Objekt zurückgibt, das DateTimeFormatInfo Formatierungsinformationen bereitstellt.
Wenn provider ja null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.
Hinweise für Aufrufer
In .NET Framework 4 löst die ParseExact Methode ein FormatException , wenn die zu analysierende Zeichenfolge eine Stundenkomponente und einen AM/PM-Kennzeichner enthält, der nicht in Übereinstimmung ist. In .NET Framework 3.5 und früheren Versionen wird der AM/PM-Kennzeichner ignoriert.
Weitere Informationen
- TryParseExact
- CultureInfo
- DateTimeFormatInfo
- Analysieren von Datums- und Uhrzeitzeichenfolgen im .NET Framework
- Standardformatzeichenfolgen für Datum und Uhrzeiten
- Benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit