DateTimeOffset.TryParseExact 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 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)
- Quelle:
- DateTimeOffset.cs
- Quelle:
- DateTimeOffset.cs
- Quelle:
- 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 input
definieren. 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 z
benutzerdefinierten Formatbezeichner , zz
oder zzz
enthält, um anzugeben, dass ein Offset in input
vorhanden 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:
Ein CultureInfo -Objekt, das die Kultur darstellt, basierend auf der
input
interpretiert wird. Das DateTimeFormatInfo von der CultureInfo.DateTimeFormat -Eigenschaft zurückgegebene Objekt definiert die Symbole und Formatierungen ininput
.Ein DateTimeFormatInfo -Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
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 formats angegeben 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 formats angegeben werden. Diese werden beim Analysieren der Zeichenfolge ignoriert. |
AllowTrailingWhite | Ermöglicht input das Einschließen von nachgestellten Leerzeichen, die nicht von den -Elementen in formats angegeben 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 formats angegeben 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 input nicht 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)
- Quelle:
- DateTimeOffset.cs
- Quelle:
- DateTimeOffset.cs
- Quelle:
- 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 input
definieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standard-Datums- und Uhrzeitformatzeichenfolgen und benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen. Wenn format
die z
benutzerdefinierten Formatbezeichner , zz
oder zzz
enthalten sind, um anzugeben, dass ein Offset in input
vorhanden 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:
Ein CultureInfo -Objekt, das die Kultur darstellt, auf deren
input
Grundlage interpretiert wird. Das DateTimeFormatInfo von der CultureInfo.DateTimeFormat -Eigenschaft zurückgegebene Objekt definiert die Symbole und Standardformate, die in zulässig sindinput
.Ein DateTimeFormatInfo -Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
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 input nicht zulässig ist. Leerzeichen müssen genau wie in format angegeben 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)
- Quelle:
- DateTimeOffset.cs
- Quelle:
- DateTimeOffset.cs
- Quelle:
- 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 input
definieren. 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 z
benutzerdefinierten Formatbezeichner , zz
oder zzz
enthält, um anzugeben, dass ein Offset in input
vorhanden 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:
Ein CultureInfo -Objekt, das die Kultur darstellt, auf deren
input
Grundlage interpretiert wird. Das DateTimeFormatInfo von der CultureInfo.DateTimeFormat -Eigenschaft zurückgegebene Objekt definiert die Symbole und Formatierungen ininput
.Ein DateTimeFormatInfo -Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
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 formats angegeben 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 formats angegeben sind. Diese werden beim Analysieren der Zeichenfolge ignoriert. |
AllowTrailingWhite | Ermöglicht input das Einschließen von nachgestellten Leerzeichen, die nicht von den Elementen in formats angegeben 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 formats angegeben 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 input nicht 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)
- Quelle:
- DateTimeOffset.cs
- Quelle:
- DateTimeOffset.cs
- Quelle:
- 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 null
hat oder keine gültige Zeichenfolgendarstellung einer Datums- und Uhrzeitangabe im von format
und provider
definierten 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 input
definieren. Ausführliche Informationen zu gültigen Formatierungscodes finden Sie unter Standard-Datums- und Uhrzeitformatzeichenfolgen und benutzerdefinierte Datums- und Uhrzeitformatzeichenfolgen. Wenn format
die z
benutzerdefinierten Formatbezeichner , zz
oder zzz
enthalten sind, um anzugeben, dass ein Offset in input
vorhanden 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:
Ein CultureInfo -Objekt, das die Kultur darstellt, auf deren
input
Grundlage interpretiert wird. Das DateTimeFormatInfo von der CultureInfo.DateTimeFormat -Eigenschaft zurückgegebene Objekt definiert die Symbole und Standardformate, die in zulässig sindinput
.Ein DateTimeFormatInfo -Objekt, das das Format von Datums- und Uhrzeitdaten definiert.
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 input nicht zulässig ist. Leerzeichen müssen genau wie in format angegeben 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:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für