DateTimeOffset.TryParseExact Methode

Definition

Konvertiert die angegebene Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe in die DateTimeOffset-Entsprechung. Das Format der Zeichenfolgendarstellung muss einem angegebenen Format genau entsprechen.

Überlädt

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formatarrays, der kulturspezifischen Formatierungsinformationen und des Stils in die DateTimeOffset-Entsprechung. Das Format der Zeichenfolgendarstellung muss einem der angegebenen Formate genau entsprechen.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

Konvertiert die Darstellung einer Datums- und Uhrzeitangabe in einem Zeichenbereich unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in den entsprechenden DateTimeOffset. Das Format der Darstellung von Datum und Uhrzeit muss dem angegebenen Format genau entsprechen.

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Konvertiert die Darstellung einer Datums- und Uhrzeitangabe in einem Zeichenbereich unter Verwendung der Angaben über Formate, kulturabhängige Formatierungsinformationen und Stil in den entsprechenden DateTimeOffset. Das Format der Darstellung von Datum und Uhrzeit muss einem der angegebenen Formate genau entsprechen.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende DateTimeOffset. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung des angegebenen Formatarrays, der kulturspezifischen Formatierungsinformationen und des Stils in die DateTimeOffset-Entsprechung. Das Format der Zeichenfolgendarstellung muss einem der angegebenen Formate genau entsprechen.

public:
 static bool TryParseExact(System::String ^ input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (string input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (string? input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Parameter

input
String

Eine Zeichenfolge, die eine zu konvertierende Datums- und Zeitangabe enthält.

formats
String[]

Ein Array, das die erwarteten Formate von input definiert.

formatProvider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu input bereitstellt.

styles
DateTimeStyles

Eine bitweise Kombination von Enumerationswerten, die das zulässige Eingabeformat angibt. Ein häufig angegebener Wert ist None.

result
DateTimeOffset

Wenn die Methode zurückgibt, enthält das DateTimeOffset Äquivalent zum Datum und zur Uhrzeit von input, wenn die Konvertierung erfolgreich war, oder DateTimeOffset.MinValue, wenn die Konvertierung fehlgeschlagen ist. Die Konvertierung kann nicht durchgeführt werden, wenn input keine gültige Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe enthält oder wenn die enthaltene Datums- und Uhrzeitangabe nicht das von format definierte Format aufweist oder wenn formats den Wert null hat. Dieser Parameter wird nicht initialisiert übergeben.

Gibt zurück

true, wenn der input-Parameter erfolgreich konvertiert wird, andernfalls false.

Ausnahmen

styles beinhaltet einen nicht definierten DateTimeStyles-Wert.

- oder -

NoCurrentDateDefault wird nicht unterstützt.

- oder -

styles beinhaltet sich gegenseitig ausschließende DateTimeStyles-Werte.

Beispiele

Im folgenden Beispiel werden mehrere Eingabeformate für die Zeichenfolgendarstellung eines Datums- und Uhrzeit- und Offsetwerts definiert. Anschließend wird die vom Benutzer eingegebene Zeichenfolge an die TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) -Methode übergeben.

TextReader conIn = Console.In;
TextWriter conOut = Console.Out;
int tries = 0;
string input = String.Empty;

string[] formats = new string[] {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz",
                                 "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz",
                                 "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz",
                                 "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz",
                                 "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz",
                                 "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz",
                                 "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz",
                                 "M/d/yy H:m zzz", "MM/d/yy H:m zzz",
                                 "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz",
                                 "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz",
                                 "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz",
                                 "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz",
                                 "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz",
                                 "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz",
                                 "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz",
                                 "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"};
IFormatProvider provider = CultureInfo.InvariantCulture.DateTimeFormat;
DateTimeOffset result;

do {
   conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),");
   conOut.Write("Then press Enter: ");
   input = conIn.ReadLine();
   conOut.WriteLine();
   if (DateTimeOffset.TryParseExact(input, formats, provider,
                                   DateTimeStyles.AllowWhiteSpaces,
                                   out result))
   {
      break;
   }
   else
   {
      Console.WriteLine("Unable to parse {0}.", input);
      tries++;
   }
} while (tries < 3);
if (tries >= 3)
   Console.WriteLine("Exiting application without parsing {0}", input);
else
   Console.WriteLine("{0} was converted to {1}", input, result.ToString());
// Some successful sample interactions with the user might appear as follows:
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/08/2007 6:54 -6:00
//
//    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/8/2007 06:54 -06:00
//
//    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/5/07 6:54 -6:00
//
//    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
let mutable result = None    
let mutable tries = 0
let mutable input = ""

let formats = 
    [| "M/dd/yyyy HH:m zzz"; "MM/dd/yyyy HH:m zzz"
       "M/d/yyyy HH:m zzz"; "MM/d/yyyy HH:m zzz"
       "M/dd/yy HH:m zzz"; "MM/dd/yy HH:m zzz"
       "M/d/yy HH:m zzz"; "MM/d/yy HH:m zzz"
       "M/dd/yyyy H:m zzz"; "MM/dd/yyyy H:m zzz"
       "M/d/yyyy H:m zzz"; "MM/d/yyyy H:m zzz"
       "M/dd/yy H:m zzz"; "MM/dd/yy H:m zzz"
       "M/d/yy H:m zzz"; "MM/d/yy H:m zzz"
       "M/dd/yyyy HH:mm zzz"; "MM/dd/yyyy HH:mm zzz"
       "M/d/yyyy HH:mm zzz"; "MM/d/yyyy HH:mm zzz"
       "M/dd/yy HH:mm zzz"; "MM/dd/yy HH:mm zzz"
       "M/d/yy HH:mm zzz"; "MM/d/yy HH:mm zzz"
       "M/dd/yyyy H:mm zzz"; "MM/dd/yyyy H:mm zzz"
       "M/d/yyyy H:mm zzz"; "MM/d/yyyy H:mm zzz"
       "M/dd/yy H:mm zzz"; "MM/dd/yy H:mm zzz"
       "M/d/yy H:mm zzz"; "MM/d/yy H:mm zzz" |]
let provider = CultureInfo.InvariantCulture.DateTimeFormat

while tries < 3 && result.IsNone do
    printfn "Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),"
    printf "Then press Enter: "
    input <- stdin.ReadLine()
    printfn ""
    match DateTimeOffset.TryParseExact(input, formats, provider, DateTimeStyles.AllowWhiteSpaces) with
    | true, dto ->
        result <- Some dto
    | _ ->
        printfn $"Unable to parse {input}."
    tries <- tries + 1

match result with
| Some result ->
    printfn $"{input} was converted to {result}"
| None ->
    printfn $"Exiting application without parsing {input}"

// Some successful sample interactions with the user might appear as follows:
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/08/2007 6:54 -6:00
//
//    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/8/2007 06:54 -06:00
//
//    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/5/07 6:54 -6:00
//
//    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
 Dim conIn As TextReader = Console.In
 Dim conOut As TextWriter = Console.Out
 Dim tries As Integer = 0
 Dim input As String = String.Empty
 Dim formats() As String = {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz", _
                            "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz", _
                            "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz", _
                            "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz", _                                 
                            "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz", _
                            "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz", _
                            "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz", _
                            "M/d/yy H:m zzz", "MM/d/yy H:m zzz", _                               
                            "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz", _
                            "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz", _
                            "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz", _
                            "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz", _                                 
                            "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz", _
                            "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz", _
                            "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz", _
                            "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"}   
 Dim provider As IFormatProvider = CultureInfo.InvariantCulture.DateTimeFormat
 Dim result As DateTimeOffset

 Do 
    conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),")
    conOut.Write("Then press Enter: ")
    input = conIn.ReadLine()
    conOut.WriteLine() 
    If DateTimeOffset.TryParseExact(input, formats, provider, _
                                    DateTimeStyles.AllowWhiteSpaces, _
                                    result) Then
       Exit Do
    Else
       Console.WriteLine("Unable to parse {0}.", input)      
       tries += 1
    End If
 Loop While tries < 3
 If tries >= 3 Then
    Console.WriteLine("Exiting application without parsing {0}", input)
 Else
    Console.WriteLine("{0} was converted to {1}", input, result.ToString())                                                     
 End If 
 ' Some successful sample interactions with the user might appear as follows:
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/08/2007 6:54 -6:00
 '    
 '    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00         
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/8/2007 06:54 -06:00
 '    
 '    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/5/07 6:54 -6:00
 '    
 '    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00

Hinweise

Die TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) -Methode analysiert die Zeichenfolgendarstellung eines Datums, das mit einem der dem formats Array zugewiesenen Muster übereinstimmt. Wenn die input Zeichenfolge keines dieser Muster mit durch den Parameter definierten Variationen übereinstimmt, schlägt der styles Analysevorgang fehl, und die -Methode gibt zurück false. Abgesehen vom Vergleich input mit mehreren Zeichenfolgen, die Formatbezeichner enthalten, verhält sich diese Überladung identisch mit der DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) -Methode.

Der formats Parameter ist ein Zeichenfolgenarray, dessen Elemente entweder einen einzelnen Standardformatbezeichner oder einen oder mehrere benutzerdefinierte Formatbezeichner enthalten, die das mögliche Muster von inputdefinieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standardformatzeichenfolgen für Datum und Uhrzeit und benutzerdefinierte Formatzeichenfolgen für Datum und Uhrzeit. Wenn das übereinstimmende Element in formats die zbenutzerdefinierten Formatbezeichner , zzoder zzz enthält, um anzugeben, dass ein Offset in inputvorhanden sein muss, muss dieser Offset entweder ein negatives oder ein positives Zeichen enthalten. Wenn das Zeichen fehlt, schlägt der Analysevorgang fehl, und die -Methode gibt zurück false.

Wichtig

Wenn Sie den formats Parameter dieser Überladung verwenden, um mehrere Formate anzugeben, kann die Frustration reduziert werden, die viele Benutzer bei der Eingabe von Datums- und Uhrzeitangaben erleben. Insbesondere die Möglichkeit, mehrere Eingabemuster zu definieren, ermöglicht es einer Anwendung, Datums- und Uhrzeitdarstellungen zu verarbeiten, die führende Nullen in Monaten, Tagen, Stunden, Minuten und Sekunden enthalten oder nicht enthalten können. Im Beispiel wird dies veranschaulicht.

Wenn das übereinstimmende Element in formats erfordert, dass input ein Datum, aber keine Uhrzeit enthält, wird dem resultierenden DateTimeOffset Objekt eine Uhrzeit von Mitternacht (0:00:00) zugewiesen. Wenn das übereinstimmende Element in formats erfordert, dass die Eingabe eine Uhrzeit, aber kein Datum enthält, wird dem resultierenden DateTimeOffset Objekt das aktuelle Datum auf dem lokalen System zugewiesen. Wenn das übereinstimmende Element in formats keinen Offset benötigt input , hängt der Offset des resultierenden DateTimeOffset Objekts vom Wert des styles Parameters ab. Wenn styles einschließt AssumeLocal, wird dem -Objekt der Offset der lokalen Zeitzone zugewiesen DateTimeOffset . Wenn styles einschließt AssumeUniversal, wird der UTC-Offset (Coordinated Universal Time) oder +00:00 dem DateTimeOffset -Objekt zugewiesen. Wenn kein Wert angegeben wird, wird der Offset der lokalen Zeitzone verwendet.

Die in verwendeten input Datums- und Uhrzeitsymbole und Zeichenfolgen werden durch den formatProvider -Parameter definiert. Das gleiche gilt für das genaue Muster, input wenn das übereinstimmende Element von formats eine Standardformatbezeichnerzeichenfolge ist. Der formatProvider Parameter kann einer der folgenden Sein:

Wenn formatprovider ist null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.

Der styles Parameter definiert, ob Leerzeichen in der Eingabezeichenfolge zulässig sind, gibt an, wie Zeichenfolgen ohne explizite Offsetkomponente analysiert werden, und unterstützt die UTC-Konvertierung im Rahmen des Analysevorgangs. Alle Member der DateTimeStyles -Enumeration werden unterstützt, mit Ausnahme NoCurrentDateDefaultvon . In der folgenden Tabelle sind die Auswirkungen der einzelnen unterstützten Member aufgeführt.

DateTimeStyles -Member Verhalten
AdjustToUniversal input Analysiert und konvertiert es bei Bedarf in UTC. Dies entspricht dem Analysieren einer Zeichenfolge und dem anschließenden Aufrufen der DateTimeOffset.ToUniversalTime -Methode des zurückgegebenen DateTimeOffset Objekts.
AssumeLocal Wenn das übereinstimmene Element in formats keinen Offsetwert benötigt input , erhält das zurückgegebene DateTimeOffset Objekt den Offset der lokalen Zeitzone. Dies ist der Standardwert.
AssumeUniversal Wenn das übereinstimmene Element in formats keinen Offsetwert benötigt input , erhält das zurückgegebene DateTimeOffset Objekt den UTC-Offset (+00:00).
AllowInnerWhite Ermöglicht input das Einschließen des inneren Leerraums, der nicht von den -Elementen in formatsangegeben wird. Zusätzliche Leerzeichen können zwischen Datums- und Uhrzeitkomponenten und innerhalb einzelner Komponenten (mit Ausnahme des Offsets) angezeigt werden und werden beim Analysieren der Zeichenfolge ignoriert.
AllowLeadingWhite Ermöglicht input das Einschließen von führenden Leerzeichen, die nicht von den -Elementen in formatsangegeben werden. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowTrailingWhite Ermöglicht input das Einschließen von nachgestellten Leerzeichen, die nicht von den -Elementen in formatsangegeben werden. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowWhiteSpaces Ermöglicht input das Einschließen von führenden, nachgestellten und inneren Leerzeichen, die nicht von den Elementen in formatsangegeben werden. Alle zusätzlichen Leerzeichen, die nicht im übereinstimmenden Element in formats angegeben sind, werden beim Analysieren der Zeichenfolge ignoriert.
None Gibt an, dass zusätzliche Leerzeichen in inputnicht zulässig sind. Leerzeichen müssen genau wie in einem bestimmten Element in formats angegeben angezeigt werden, damit eine erfolgreiche Übereinstimmung erfolgen kann. Dies ist das Standardverhalten.
RoundtripKind Hat keine Auswirkung, da die DateTimeOffset -Struktur keine -Eigenschaft enthält Kind .

Hinweise für Aufrufer

Im .NET Framework 4 gibt zurück TryParseExactfalse, wenn die zu analysierende Zeichenfolge eine Stundenkomponente und einen AM/PM-Bezeichner enthält, die nicht übereinstimmen. In der .NET Framework 3.5 und früheren Versionen wird der AM/PM-Bezeichner ignoriert.

Gilt für:

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

Konvertiert die Darstellung einer Datums- und Uhrzeitangabe in einem Zeichenbereich unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in den entsprechenden DateTimeOffset. Das Format der Darstellung von Datum und Uhrzeit muss dem angegebenen Format genau entsprechen.

public:
 static bool TryParseExact(ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Parameter

input
ReadOnlySpan<Char>

Eine Zeichenspanne, die zu konvertierende Datums- und Uhrzeitwerte darstellt.

format
ReadOnlySpan<Char>

Ein Formatbezeichner, der das erforderliche Format von input definiert.

formatProvider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu input bereitstellt.

styles
DateTimeStyles

Eine bitweise Kombination von Enumerationswerten, die das zulässige Format von input angibt. Ein häufig angegebener Wert ist None.

result
DateTimeOffset

Wenn die Methode zurückgibt, enthält das DateTimeOffset Äquivalent zum Datum und zur Uhrzeit von input, wenn die Konvertierung erfolgreich war, oder DateTimeOffset.MinValue , wenn die Konvertierung fehlgeschlagen ist. Die Konvertierung schlägt fehl, wenn

Gibt zurück

true, wenn der input-Parameter erfolgreich konvertiert wird, andernfalls false.

Ausnahmen

styles beinhaltet einen nicht definierten DateTimeStyles-Wert. oder NoCurrentDateDefault wird nicht unterstützt. oder styles enthält sich gegenseitig ausschließende DateTimeStyles-Werte.

Hinweise

Diese Überladung ähnelt der DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) -Methode, mit der Ausnahme, dass diese Methode keine Ausnahme auslöst, wenn die Konvertierung fehlschlägt. Es analysiert die Darstellung eines Datums und einer Uhrzeit, die genau mit dem vom format -Parameter angegebenen Muster übereinstimmen müssen. Wenn input nicht mit diesem Muster übereinstimmt, mit einigen möglichen Variationen im Leerraum, der durch den styles -Parameter definiert wird, schlägt der Analysevorgang fehl, und die -Methode gibt zurück false.

Der format Parameter ist eine Zeichenspanne, die entweder einen einzelnen Standardformatbezeichner oder einen oder mehrere benutzerdefinierte Formatbezeichner enthält, die das erforderliche Muster von inputdefinieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standard-Datums- und Uhrzeitformatzeichenfolgen und benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen. Wenn format die zbenutzerdefinierten Formatbezeichner , zzoder zzz enthalten sind, um anzugeben, dass ein Offset in inputvorhanden sein muss, muss dieser Offset entweder ein negatives oder ein positives Zeichen enthalten. Wenn das Zeichen fehlt, schlägt der Analysevorgang fehl, und die -Methode gibt zurück false.

Wenn format erforderlich ist, dass input ein Datum, aber keine Uhrzeit enthält, wird dem resultierenden DateTimeOffset Objekt eine Uhrzeit von Mitternacht (0:00:00:00) zugewiesen. Wenn format erforderlich ist, dass input eine Uhrzeit, aber kein Datum enthält, wird dem resultierenden DateTimeOffset Objekt das aktuelle Datum auf dem lokalen System zugewiesen. Wenn format kein Offset erforderlich input ist, hängt der Offset des resultierenden DateTimeOffset Objekts vom Wert des styles Parameters ab. Wenn styles enthält AssumeLocal, wird der Offset der lokalen Zeitzone dem DateTimeOffset -Objekt zugewiesen. Wenn styles eingeschlossen AssumeUniversalist, wird dem Objekt der Utc-Offset (Koordinierte Weltzeit) oder +00:00 zugewiesen DateTimeOffset . Wenn kein Wert angegeben wird, wird der Offset der lokalen Zeitzone verwendet.

Die in verwendeten input Datums- und Uhrzeitsymbole und Zeichenfolgen werden durch den formatProvider -Parameter definiert. Das gleiche gilt für das genaue Muster von input , wenn format eine Standardformatbezeichnerzeichenfolge ist. Der formatProvider Parameter kann einer der folgenden Sein:

Wenn formatprovider ist null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.

Der styles Parameter definiert, ob Leerraum in der Eingabezeichenfolge zulässig ist, gibt an, wie Zeichenfolgen ohne explizite Offsetkomponente analysiert werden, und unterstützt die UTC-Konvertierung im Rahmen des Analysevorgangs. Mit Ausnahme NoCurrentDateDefaultvon werden alle Member der DateTimeStyles Enumeration unterstützt. In der folgenden Tabelle sind die Auswirkungen der einzelnen unterstützten Member aufgeführt.

DateTimeStyles -Member Verhalten
AdjustToUniversal input Analysiert und konvertiert sie bei Bedarf in UTC. Sie entspricht dem Analysieren einer Datums- und Uhrzeitdarstellung und dem anschließenden Aufrufen der DateTimeOffset.ToUniversalTime -Methode des zurückgegebenen DateTimeOffset Objekts.
AssumeLocal Wenn format kein Offsetwert erforderlich input ist, erhält das zurückgegebene DateTimeOffset Objekt den Offset der lokalen Zeitzone. Dies ist das Standardverhalten.
AssumeUniversal Wenn format kein Offsetwert erforderlich input ist, erhält das zurückgegebene DateTimeOffset Objekt den UTC-Offset (+00:00).
AllowInnerWhite Ermöglicht input das Einschließen von innerem Leerraum, der nicht im Format angegeben ist. Zusätzliche Leerzeichen können zwischen Datums- und Uhrzeitkomponenten und innerhalb einzelner Komponenten außer dem Offset angezeigt werden und werden beim Analysieren der Zeichenfolge ignoriert.
AllowLeadingWhite Ermöglicht input , führende Leerzeichen einzuschließen, die nicht von angegeben sind format. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowTrailingWhite Ermöglicht input das Einschließen von nachgestellten Leerzeichen, die nicht durch angegeben werden format. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowWhiteSpaces Ermöglicht input , führende, nachgestellte und innere Leerzeichen einzuschließen, die nicht von angegeben sind format. Alle zusätzlichen Leerzeichen, die format in nicht angegeben sind, werden ignoriert, wenn die Zeichenfolge analysiert wird.
None Gibt an, dass zusätzlicher Leerraum in inputnicht zulässig ist. Leerzeichen müssen genau wie in formatangegeben angezeigt werden. Dies ist das Standardverhalten.
RoundtripKind Hat keine Auswirkung, da die DateTimeOffset Struktur keine -Eigenschaft enthält Kind .

Gilt für:

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

Konvertiert die Darstellung einer Datums- und Uhrzeitangabe in einem Zeichenbereich unter Verwendung der Angaben über Formate, kulturabhängige Formatierungsinformationen und Stil in den entsprechenden DateTimeOffset. Das Format der Darstellung von Datum und Uhrzeit muss einem der angegebenen Formate genau entsprechen.

public:
 static bool TryParseExact(ReadOnlySpan<char> input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (ReadOnlySpan<char> input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (ReadOnlySpan<char> input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Parameter

input
ReadOnlySpan<Char>

Eine Zeichenspanne, die zu konvertierende Datums- und Uhrzeitwerte darstellt.

formats
String[]

Ein Array von standardmäßigen oder benutzerdefinierten Formatierungszeichenfolgen, die die zulässigen Formate von input definieren.

formatProvider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu input bereitstellt.

styles
DateTimeStyles

Eine bitweise Kombination von Enumerationswerten, die das zulässige Format von input angibt. Ein häufig angegebener Wert ist None.

result
DateTimeOffset

Wenn die Methode zurückgibt, enthält das DateTimeOffset Äquivalent zum Datum und zur Uhrzeit von input, wenn die Konvertierung erfolgreich war, oder DateTimeOffset.MinValue , wenn die Konvertierung fehlgeschlagen ist. Die Konvertierung schlägt fehl, wenn

Gibt zurück

true, wenn der input-Parameter erfolgreich konvertiert wird, andernfalls false.

Ausnahmen

styles beinhaltet einen nicht definierten DateTimeStyles-Wert. oder NoCurrentDateDefault wird nicht unterstützt. oder styles enthält sich gegenseitig ausschließende DateTimeStyles-Werte.

Hinweise

Diese Methode analysiert die Zeichenfolgendarstellung eines Datums, das einem der Muster entspricht, die dem formats Array zugewiesen sind. Wenn input keines dieser Muster mit durch den -Parameter definierten Variationen übereinstimmt, schlägt der styles Analysevorgang fehl, und die -Methode gibt zurück false. Abgesehen vom Vergleich input mit mehreren Zeichenfolgen, die Formatbezeichner enthalten, verhält sich diese Überladung identisch mit der DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) -Methode.

Der formats Parameter ist ein Zeichenfolgenarray, dessen Elemente entweder einen einzelnen Standardformatbezeichner oder einen oder mehrere benutzerdefinierte Formatbezeichner enthalten, die das mögliche Muster von inputdefinieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standard-Datums- und Uhrzeitformatzeichenfolgen und benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen. Wenn das übereinstimmende Element in formats die zbenutzerdefinierten Formatbezeichner , zzoder zzz enthält, um anzugeben, dass ein Offset in inputvorhanden sein muss, muss dieser Offset entweder ein negatives oder ein positives Zeichen enthalten. Wenn das Zeichen fehlt, schlägt der Analysevorgang fehl, und die -Methode gibt zurück false.

Wichtig

Wenn Sie den formats Parameter dieser Überladung verwenden, um mehrere Formate anzugeben, kann die Frustration bei vielen Benutzern verringert werden, wenn sie Datums- und Uhrzeitangaben eingeben. Insbesondere die Möglichkeit, mehrere Eingabemuster zu definieren, ermöglicht es einer Anwendung, Datums- und Uhrzeitdarstellungen zu verarbeiten, die entweder führende Nullen in Monaten, Tagen, Stunden, Minuten und Sekunden enthalten oder fehlen. Im Beispiel wird dies veranschaulicht.

Wenn das übereinstimmene Element in formats erfordert, das input ein Datum, aber keine Uhrzeit enthält, wird dem resultierenden DateTimeOffset Objekt eine Uhrzeit von Mitternacht (0:00:00:00) zugewiesen. Wenn das übereinstimmene Element in formats erfordert, dass die Eingabe eine Uhrzeit, aber kein Datum enthält, wird dem resultierenden DateTimeOffset Objekt das aktuelle Datum auf dem lokalen System zugewiesen. Wenn das übereinstimmene Element in formats keinen Offset erfordert input , hängt der Offset des resultierenden DateTimeOffset Objekts vom Wert des styles Parameters ab. Wenn styles enthält DateTimeStyles.AssumeLocal, wird der Offset der lokalen Zeitzone dem DateTimeOffset -Objekt zugewiesen. Wenn styles eingeschlossen DateTimeStyles.AssumeUniversalist, wird dem Objekt der Utc-Offset (Koordinierte Weltzeit) oder +00:00 zugewiesen DateTimeOffset . Wenn kein Wert angegeben wird, wird der Offset der lokalen Zeitzone verwendet.

Die in verwendeten input Datums- und Uhrzeitsymbole werden durch den formatProvider Parameter definiert. Das gleiche gilt für das genaue Muster, input wenn das übereinstimmende Element von formats eine Standardformatbezeichnerzeichenfolge ist. Der formatProvider Parameter kann einer der folgenden Sein:

Wenn formatprovider ist null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.

Der styles Parameter definiert, ob Leerzeichen in der Eingabezeichenfolge zulässig sind, gibt an, wie Zeichenfolgen ohne explizite Offsetkomponente analysiert werden, und unterstützt die UTC-Konvertierung im Rahmen des Analysevorgangs. Mit Ausnahme NoCurrentDateDefaultvon werden alle Member der DateTimeStyles Enumeration unterstützt. In der folgenden Tabelle sind die Auswirkungen der einzelnen unterstützten Member aufgeführt.

DateTimeStyles -Member Verhalten
AdjustToUniversal input Analysiert und konvertiert sie bei Bedarf in UTC. Dies entspricht dem Analysieren einer Zeichenfolge und dem aufrufen der DateTimeOffset.ToUniversalTime Methode des zurückgegebenen DateTimeOffset Objekts.
AssumeLocal Wenn das übereinstimmene Element in formats keinen Offsetwert erfordert input , erhält das zurückgegebene DateTimeOffset Objekt den Offset der lokalen Zeitzone. Dies ist der Standardwert.
AssumeUniversal Wenn das übereinstimmene Element in formats keinen Offsetwert erfordert input , erhält das zurückgegebene DateTimeOffset Objekt den UTC-Offset (+00:00).
AllowInnerWhite Ermöglicht input es, inneren Leerraum einzuschließen, der nicht von den Elementen in formatsangegeben wird. Zusätzlicher Leerraum kann zwischen Datums- und Uhrzeitkomponenten und innerhalb einzelner Komponenten (mit Ausnahme des Offsets) angezeigt werden und wird beim Analysieren der Zeichenfolge ignoriert.
AllowLeadingWhite Ermöglicht input es, führende Leerzeichen einzuschließen, die nicht von den -Elementen in formatsangegeben sind. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowTrailingWhite Ermöglicht input das Einschließen von nachgestellten Leerzeichen, die nicht von den Elementen in formatsangegeben werden. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowWhiteSpaces Ermöglicht input das Einschließen von führenden, nachgestellten und inneren Leerzeichen, die nicht von den Elementen in formatsangegeben werden. Alle zusätzlichen Leerzeichen, die im übereinstimmenden Element formats in nicht angegeben sind, werden beim Analysieren der Zeichenfolge ignoriert.
None Gibt an, dass zusätzlicher Leerraum in inputnicht zulässig ist. Leerzeichen müssen genau wie in einem bestimmten Element formats in angegeben angezeigt werden, damit eine erfolgreiche Übereinstimmung auftritt. Dies ist das Standardverhalten.
RoundtripKind Hat keine Auswirkung, da die DateTimeOffset Struktur keine -Eigenschaft enthält Kind .

Gilt für:

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

Konvertiert die angegebene Zeichenfolgenentsprechung einer Datums- und Uhrzeitangabe unter Verwendung der Angaben über Format, kulturabhängige Formatierungsinformationen und Stil in die entsprechende DateTimeOffset. Das Format der Zeichenfolgendarstellung muss dem angegebenen Format genau entsprechen.

public:
 static bool TryParseExact(System::String ^ input, System::String ^ format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (string input, string format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (string? input, string? format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, format As String, formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Parameter

input
String

Eine Zeichenfolge, die eine zu konvertierende Datums- und Zeitangabe enthält.

format
String

Ein Formatbezeichner, der das erforderliche Format von input definiert.

formatProvider
IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu input bereitstellt.

styles
DateTimeStyles

Eine bitweise Kombination von Enumerationswerten, die das zulässige Eingabeformat angibt. Ein häufig angegebener Wert ist None.

result
DateTimeOffset

Wenn die -Methode zurückgibt, enthält das DateTimeOffset Äquivalent zum Datum und zur Uhrzeit von input, wenn die Konvertierung erfolgreich war, oder DateTimeOffset.MinValue, wenn bei der Konvertierung ein Fehler aufgetreten ist. Die Konvertierung kann nicht durchgeführt werden, wenn der input -Parameter den Wert nullhat oder keine gültige Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe im von format und providerdefinierten erwarteten Format enthält. Dieser Parameter wird nicht initialisiert übergeben.

Gibt zurück

true, wenn der input-Parameter erfolgreich konvertiert wird, andernfalls false.

Ausnahmen

styles beinhaltet einen nicht definierten DateTimeStyles-Wert.

- oder -

NoCurrentDateDefault wird nicht unterstützt.

- oder -

styles beinhaltet sich gegenseitig ausschließende DateTimeStyles-Werte.

Beispiele

Im folgenden Beispiel wird die TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) -Methode mit Standard- und benutzerdefinierten Formatbezeichnern, der invarianten Kultur und verschiedenen DateTimeStyles Werten verwendet, um mehrere Datums- und Uhrzeitzeichenfolgen zu analysieren.

string dateString, format;
DateTimeOffset result;
IFormatProvider provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AssumeUniversal,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
dateString = " 06/15/2008";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowTrailingWhite,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00";
format = "MM/dd/yyyy H:mm zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowWhiteSpaces,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00";
format = "MM/dd/yyyy H:mm:ss zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                DateTimeStyles.AllowWhiteSpaces |
                                DateTimeStyles.AdjustToUniversal,
                                out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   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 +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
let provider = CultureInfo.InvariantCulture

// Parse date-only value with invariant culture and assume time is UTC.
let dateString = "06/15/2008"
let format = "d"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AssumeUniversal) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
let dateString = " 06/15/2008"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowTrailingWhite) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// Parse date and time value, and allow all white space.
let dateString = " 06/15/   2008  15:15    -05:00"
let format = "MM/dd/yyyy H:mm zzz"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowWhiteSpaces) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// Parse date and time and convert to UTC.
let dateString = "  06/15/2008 15:15:30 -05:00"
let format = "MM/dd/yyyy H:mm:ss zzz"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowWhiteSpaces ||| DateTimeStyles.AdjustToUniversal) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// The example displays the following output:
//    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
Dim dateString, format As String  
Dim result As DateTimeOffset
Dim provider As CultureInfo = CultureInfo.InvariantCulture

' Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008"
format = "d"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                   DateTimeStyles.AssumeUniversal, _
                                   result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date-only value with leading white space.
' Should return False because only trailing white space is  
' specified in method call.
dateString = " 06/15/2008"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowTrailingWhite, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00"
format = "MM/dd/yyyy H:mm zzz"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00"   
format = "MM/dd/yyyy H:mm:ss zzz"       
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces Or _
                                DateTimeStyles.AdjustToUniversal, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 
' The example displays the following output:
'    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
'    ' 06/15/2008' is not in the correct format.
'    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
'    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.

Im folgenden Beispiel werden verschiedene DateTimeStyles Werte verwendet, um ein Array von Zeichenfolgen zu analysieren, von denen erwartet wird, dass sie ISO 8601 entsprechen. Wie die Ausgabe aus dem Beispiel zeigt, können Zeichenfolgen, die das richtige Format aufweisen, nicht analysiert werden, wenn:

  • Sie enthalten Leerzeichen und ein entsprechendes DateTimeStyles Flag (z. B DateTimeStyles.AllowWhiteSpaces . nicht im Methodenaufruf angegeben).

  • Sie enthalten Datums- und Uhrzeitelemente, die außerhalb des Bereichs liegen.

Bei Zeichenfolgen, die keinen UTC-Offset angeben, wird davon ausgegangen, dass sie den Offset der lokalen Zeitzone aufweisen (in diesem Fall -07:00, der den Offset der Pacific Daylight Time Zone widerspiegelt), es sei denn, das DateTimeStyles.AssumeUniversal Flag wird im Methodenaufruf angegeben. In diesem Fall wird davon ausgegangen, dass es sich um universelle koordinierte Zeit handelt.

open System
open System.Globalization

let parseWithISO8601 dateStrings styles =
    printfn $"Parsing with {styles}:"
    for dateString in dateStrings do
        match DateTimeOffset.TryParseExact(dateString, "O", null, styles) with
        | true, date ->
            printfn $"""   {dateString,-35} --> {date.ToString "yyyy-MM-dd HH:mm:ss.FF zzz"}"""
        | _ ->
            printfn $"   Unable to convert '{dateString}'"

let dateStrings = 
    [ "2018-08-18T12:45:16.0000000Z"
      "2018/08/18T12:45:16.0000000Z"
      "2018-18-08T12:45:16.0000000Z"
      "2018-08-18T12:45:16.0000000"
      " 2018-08-18T12:45:16.0000000Z "
      "2018-08-18T12:45:16.0000000+02:00"
      "2018-08-18T12:45:16.0000000-07:00" ]

parseWithISO8601 dateStrings DateTimeStyles.None
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AllowWhiteSpaces
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AdjustToUniversal
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AssumeLocal
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AssumeUniversal

// The example displays the following output:
//      Parsing with None:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AllowWhiteSpaces:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AdjustToUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
//
//      -----
//
//      Parsing with AssumeLocal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AssumeUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "2018-08-18T12:45:16.0000000Z",
                               "2018/08/18T12:45:16.0000000Z",
                               "2018-18-08T12:45:16.0000000Z",
                               "2018-08-18T12:45:16.0000000",                               
                               " 2018-08-18T12:45:16.0000000Z ",
                               "2018-08-18T12:45:16.0000000+02:00",
                               "2018-08-18T12:45:16.0000000-07:00" }; 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal);   }

   private static void ParseWithISO8601(string[] dateStrings, DateTimeStyles styles)
   {   
      Console.WriteLine($"Parsing with {styles}:");
      DateTimeOffset date;
      foreach (var dateString in dateStrings)
      {
         if (DateTimeOffset.TryParseExact(dateString, "O", null, styles, out date))
         {
            Console.WriteLine($"   {dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
         }
         else
         {
            Console.WriteLine($"   Unable to convert '{dateString}'");
         }   
      } 
   }
}
// The example displays the following output:
//      Parsing with None:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AllowWhiteSpaces:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AdjustToUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
//
//      -----
//
//      Parsing with AssumeLocal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AssumeUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateStrings() = { "2018-08-18T12:45:16.0000000Z",
                            "2018/08/18T12:45:16.0000000Z",
                            "2018-18-08T12:45:16.0000000Z",
                            "2018-08-18T12:45:16.0000000",                               
                            " 2018-08-18T12:45:16.0000000Z ",
                            "2018-08-18T12:45:16.0000000+02:00",
                            "2018-08-18T12:45:16.0000000-07:00" } 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal)   
   End Sub

   Private Sub ParseWithISO8601(dateStrings() As String, styles As DateTimeStyles)
      Console.WriteLine($"Parsing with {styles}:")
      Dim dat As DateTimeOffset
      For Each dateStr In dateStrings
         If DateTimeOffset.TryParseExact(dateStr, "O", Nothing, styles, dat) Then
            Console.WriteLine($"   {dateStr,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
         Else
            Console.WriteLine($"   Unable to convert '{dateStr}'")
         End If   
      Next 
   End Sub
End Module
' The example displays the following output:
'      Parsing with None:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AllowWhiteSpaces:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AdjustToUniversal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
'
'      -----
'
'      Parsing with AssumeLocal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AssumeUniversal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00

Hinweise

Diese Überladung der TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) Methode ähnelt der -Methode, mit dem DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) Unterschied, dass diese Methode keine Ausnahme auslöst, wenn die Konvertierung fehlschlägt. Es analysiert die Zeichenfolgendarstellung eines Datums und einer Uhrzeit, die genau mit dem vom format Parameter angegebenen Muster übereinstimmen müssen. Wenn die input Zeichenfolge nicht mit diesem Muster übereinstimmt und einige mögliche Variationen im Leerraum durch den -Parameter definiert sind, schlägt der styles Analysevorgang fehl, und die -Methode gibt zurück false.

Der format Parameter ist eine Zeichenfolge, die entweder einen einzelnen Standardformatbezeichner oder einen oder mehrere benutzerdefinierte Formatbezeichner enthält, die das erforderliche Muster von inputdefinieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standard-Datums- und Uhrzeitformatzeichenfolgen und benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen. Wenn format die zbenutzerdefinierten Formatbezeichner , zzoder zzz enthalten sind, um anzugeben, dass ein Offset in inputvorhanden sein muss, muss dieser Offset entweder ein negatives oder ein positives Zeichen enthalten. Wenn das Zeichen fehlt, schlägt der Analysevorgang fehl, und die -Methode gibt zurück false.

Wenn format erforderlich ist, dass input ein Datum, aber keine Uhrzeit enthält, wird dem resultierenden DateTimeOffset Objekt eine Uhrzeit von Mitternacht (0:00:00:00) zugewiesen. Wenn format erforderlich ist, dass input eine Uhrzeit, aber kein Datum enthält, wird dem resultierenden DateTimeOffset Objekt das aktuelle Datum auf dem lokalen System zugewiesen. Wenn format kein Offset erforderlich input ist, hängt der Offset des resultierenden DateTimeOffset Objekts vom Wert des styles Parameters ab. Wenn styles enthält AssumeLocal, wird der Offset der lokalen Zeitzone dem DateTimeOffset -Objekt zugewiesen. Wenn styles eingeschlossen AssumeUniversalist, wird dem Objekt der Utc-Offset (Koordinierte Weltzeit) oder +00:00 zugewiesen DateTimeOffset . Wenn kein Wert angegeben wird, wird der Offset der lokalen Zeitzone verwendet.

Die in verwendeten input Datums- und Uhrzeitsymbole und Zeichenfolgen werden durch den formatProvider -Parameter definiert. Das gleiche gilt für das genaue Muster von input , wenn format eine Standardformatbezeichnerzeichenfolge ist. Der formatProvider Parameter kann einer der folgenden Sein:

Wenn formatprovider ist null, wird das CultureInfo Objekt verwendet, das der aktuellen Kultur entspricht.

Der styles Parameter definiert, ob Leerraum in der Eingabezeichenfolge zulässig ist, gibt an, wie Zeichenfolgen ohne explizite Offsetkomponente analysiert werden, und unterstützt die UTC-Konvertierung im Rahmen des Analysevorgangs. Mit Ausnahme NoCurrentDateDefaultvon werden alle Member der DateTimeStyles Enumeration unterstützt. In der folgenden Tabelle sind die Auswirkungen der einzelnen unterstützten Member aufgeführt.

DateTimeStyles -Member Verhalten
AdjustToUniversal input Analysiert und konvertiert sie bei Bedarf in UTC. Dies entspricht dem Analysieren einer Zeichenfolge und dem aufrufen der DateTimeOffset.ToUniversalTime Methode des zurückgegebenen DateTimeOffset Objekts.
AssumeLocal Wenn format kein Offsetwert erforderlich input ist, erhält das zurückgegebene DateTimeOffset Objekt den Offset der lokalen Zeitzone. Dies ist das Standardverhalten.
AssumeUniversal Wenn format kein Offsetwert erforderlich input ist, erhält das zurückgegebene DateTimeOffset Objekt den UTC-Offset (+00:00).
AllowInnerWhite Ermöglicht input das Einschließen von innerem Leerraum, der nicht im Format angegeben ist. Zusätzliche Leerzeichen können zwischen Datums- und Uhrzeitkomponenten und innerhalb einzelner Komponenten außer dem Offset angezeigt werden und werden beim Analysieren der Zeichenfolge ignoriert.
AllowLeadingWhite Ermöglicht input , führende Leerzeichen einzuschließen, die nicht von angegeben sind format. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowTrailingWhite Ermöglicht input das Einschließen von nachgestellten Leerzeichen, die nicht durch angegeben werden format. Diese werden beim Analysieren der Zeichenfolge ignoriert.
AllowWhiteSpaces Ermöglicht input , führende, nachgestellte und innere Leerzeichen einzuschließen, die nicht von angegeben sind format. Alle zusätzlichen Leerzeichen, die format in nicht angegeben sind, werden ignoriert, wenn die Zeichenfolge analysiert wird.
None Gibt an, dass zusätzlicher Leerraum in inputnicht zulässig ist. Leerzeichen müssen genau wie in formatangegeben angezeigt werden. Dies ist das Standardverhalten.
RoundtripKind Hat keine Auswirkung, da die DateTimeOffset Struktur keine -Eigenschaft enthält Kind .

Hinweise für Aufrufer

Im .NET Framework 4 wird zurückgegebenfalse, TryParseExact wenn die zu analysierende Zeichenfolge eine Stundenkomponente und einen AM/PM-Entwurf enthält, die nicht übereinstimmen. In den .NET Framework 3.5 und früheren Versionen wird der AM/PM-Bezeichner ignoriert.

Weitere Informationen

Gilt für: