DateTime.TryParseExact Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje określoną reprezentację ciągu daty i godziny na równoważną DateTime. Format reprezentacji ciągu musi być dokładnie zgodny z określonym formatem. Metoda zwraca wartość wskazującą, czy konwersja powiodła się.
Przeciążenia
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) |
Konwertuje określoną reprezentację zakresu daty i godziny na jej DateTime odpowiednik przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format reprezentacji ciągu musi być dokładnie zgodny z określonym formatem. Metoda zwraca wartość wskazującą, czy konwersja powiodła się. |
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) |
Konwertuje określony zakres znaków daty i godziny na jego DateTime równoważne i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie. |
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) |
Konwertuje określoną reprezentację ciągu daty i godziny na równoważną DateTime przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format reprezentacji ciągu musi być dokładnie zgodny z określonym formatem. Metoda zwraca wartość wskazującą, czy konwersja powiodła się. |
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) |
Konwertuje określoną reprezentację ciągu daty i godziny na równoważną DateTime przy użyciu określonej tablicy formatów, informacji o formacie specyficznym dla kultury i stylu. Format reprezentacji ciągu musi być dokładnie zgodny z co najmniej jednym z określonych formatów. Metoda zwraca wartość wskazującą, czy konwersja powiodła się. |
Uwagi
Ważny
Era w japońskich kalendarzach opiera się na panowaniu cesarza i dlatego oczekuje się, że się zmieni. Na przykład 1 maja 2019 r. oznaczało początek ery Reiwa w JapaneseCalendar i JapaneseLunisolarCalendar. Taka zmiana ery wpływa na wszystkie aplikacje korzystające z tych kalendarzy. Aby uzyskać więcej informacji i określić, czy twoje aplikacje mają wpływ, zobacz Obsługa nowej ery w kalendarzu japońskim na platformie .NET. Aby uzyskać informacje na temat testowania aplikacji w systemach Windows w celu zapewnienia gotowości do zmiany ery, zobacz Prepare your application for the Japanese era change. Aby uzyskać informacje o funkcjach na platformie .NET, które obsługują kalendarze z wieloma epokami i aby uzyskać najlepsze rozwiązania dotyczące pracy z kalendarzami obsługującymi wiele epok, zobacz Praca z erami.
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
Konwertuje określoną reprezentację zakresu daty i godziny na jej DateTime odpowiednik przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format reprezentacji ciągu musi być dokładnie zgodny z określonym formatem. Metoda zwraca wartość wskazującą, czy konwersja powiodła się.
public:
static bool TryParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Zakres zawierający znaki reprezentujące datę i godzinę konwersji.
- format
- ReadOnlySpan<Char>
Wymagany format s
.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- style
- DateTimeStyles
Bitowa kombinacja co najmniej jednej wartości wyliczenia wskazującej dozwolony format s
.
- result
- DateTime
Gdy ta metoda zwróci wartość DateTime równoważną dacie i godzinie zawartej w s
, jeśli konwersja zakończyła się pomyślnie, lub DateTime.MinValue, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s
lub format
jest null
, jest ciągiem pustym lub nie zawiera daty i godziny odpowiadającej wzorzecowi określonemu w format
. Ten parametr jest przekazywany niezainicjowany.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Dotyczy
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
Konwertuje określony zakres znaków daty i godziny na jego DateTime równoważne i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.
public:
static bool TryParseExact(ReadOnlySpan<char> s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Zakres zawierający ciąg do przeanalizowana.
- formats
- String[]
Tablica dozwolonych formatów s
.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- style
- DateTimeStyles
Bitowa kombinacja wartości wyliczenia definiujących sposób interpretowania analizowanej daty w odniesieniu do bieżącej strefy czasowej lub bieżącej daty. Typową wartością do określenia jest None.
- result
- DateTime
Gdy ta metoda zwróci wartość DateTime równoważną dacie i godzinie zawartej w s
, jeśli konwersja zakończyła się pomyślnie, lub DateTime.MinValue, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s
jest null
, jest Emptylub nie zawiera prawidłowej reprezentacji ciągu daty i godziny. Ten parametr jest przekazywany niezainicjowany.
Zwraca
true
, jeśli parametr s
został pomyślnie przekonwertowany; w przeciwnym razie false
.
Dotyczy
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
Konwertuje określoną reprezentację ciągu daty i godziny na równoważną DateTime przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format reprezentacji ciągu musi być dokładnie zgodny z określonym formatem. Metoda zwraca wartość wskazującą, czy konwersja powiodła się.
public:
static bool TryParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string? format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Parametry
- s
- String
Ciąg zawierający datę i godzinę do przekonwertowania.
- format
- String
Wymagany format s
.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- style
- DateTimeStyles
Bitowa kombinacja co najmniej jednej wartości wyliczenia wskazującej dozwolony format s
.
- result
- DateTime
Gdy ta metoda zwróci wartość DateTime równoważną dacie i godzinie zawartej w s
, jeśli konwersja zakończyła się pomyślnie, lub DateTime.MinValue, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s
lub format
jest null
, jest ciągiem pustym lub nie zawiera daty i godziny odpowiadającej wzorzecowi określonemu w format
. Ten parametr jest przekazywany niezainicjowany.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Wyjątki
style
nie jest prawidłową wartością DateTimeStyles.
-lub-
style
zawiera nieprawidłową kombinację wartości DateTimeStyles (na przykład AssumeLocal i AssumeUniversal).
Przykłady
W poniższym przykładzie pokazano metodę DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime). Należy pamiętać, że ciąg "5/01/2009 8:30 AM" nie może zostać przeanalizowany pomyślnie, gdy parametr styles
równa się DateTimeStyles.None, ponieważ spacje wiodące nie są dozwolone przez format
. Ponadto ciąg "5/01/2009 09:00" nie może zostać pomyślnie przeanalizowany z format
"MM/dd/yyyhh:mm", ponieważ ciąg daty nie poprzedza numeru miesiąca z wiodącym zerem, ponieważ format
wymaga.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
// Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM";
if (DateTime.TryParseExact(dateString, "g", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "g", enUS,
DateTimeStyles.AllowLeadingWhite, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Use custom formats with M and MM.
dateString = "5/01/2009 09:00";
if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00";
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.AdjustToUniversal, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z";
if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.RoundtripKind, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
}
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
open System
open System.Globalization
[<EntryPoint>]
let main _ =
let enUS = CultureInfo "en-US"
// Parse date with no style flags.
let dateString = " 5/01/2009 8:30 AM"
match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Use custom formats with M and MM.
let dateString = "5/01/2009 09:00"
match DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string with time zone information.
let dateString = "05/01/2009 01:30:42 PM -05:00"
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string representing UTC.
let dateString = "2008-06-11T16:11:20.0904778Z"
match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
0
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim enUS As New CultureInfo("en-US")
Dim dateString As String
Dim dateValue As Date
' Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM"
If Date.TryParseExact(dateString, "g", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "g", enUS, _
DateTimeStyles.AllowLeadingWhite, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Use custom formats with M and MM.
dateString = "5/01/2009 09:00"
If Date.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00"
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.AdjustToUniversal, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z"
If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.RoundtripKind, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
End Sub
End Module
' The example displays the following output:
' ' 5/01/2009 8:30 AM' is not in an acceptable format.
' Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
' Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
' '5/01/2009 09:00' is not in an acceptable format.
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Uwagi
Metoda DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) analizuje reprezentację ciągu daty, która musi być w formacie zdefiniowanym przez parametr format
. Jest ona podobna do metody DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles), z tą różnicą, że metoda TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) nie zgłasza wyjątku, jeśli konwersja nie powiedzie się.
Parametr s
zawiera datę i godzinę analizy i musi być w formacie zdefiniowanym przez parametr format
. Jeśli elementy daty, godziny i strefy czasowej znajdują się w s
, muszą również być wyświetlane w kolejności określonej przez format
. Jeśli format
definiuje datę bez elementu godziny, a operacja analizy powiedzie się, wynikowa wartość DateTime ma godzinę północy (00:00:00). Jeśli format
definiuje godzinę bez elementu daty i operacja analizowania powiedzie się, wynikowa wartość DateTime domyślnie ma datę DateTime.Now.Date
lub ma datę DateTime.MinValue.Date
, jeśli styles
zawiera flagę DateTimeStyles.NoCurrentDateDefault. Parametr style
określa, czy parametr s
może zawierać znaki wiodące, wewnętrzne lub końcowe białe znaki.
Jeśli s
nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest DateTimeKind.Unspecified. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.AssumeLocal, która zwraca wartość DateTime, której właściwość Kind jest DateTimeKind.Locallub przy użyciu flag DateTimeStyles.AssumeUniversal i DateTimeStyles.AdjustToUniversal, która zwraca wartość DateTime, której właściwość Kind jest DateTimeKind.Utc. Jeśli s zawiera informacje o strefie czasowej, czas jest konwertowany na czas lokalny, w razie potrzeby, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na DateTimeKind.Local. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.RoundtripKind, aby nie konwertować uniwersalnego czasu koordynowanego (UTC) na czas lokalny i ustawić właściwość Kind na wartość DateTimeKind.Utc.
Parametr format
zawiera wzorzec odpowiadający oczekiwanemu formatowi parametru s
. Wzorzec w format
parametr składa się z co najmniej jednego specyfikatora formatu niestandardowego z niestandardowych ciągów formatu daty i godziny tabeli lub jednego standardowego specyfikatora formatu, który identyfikuje wstępnie zdefiniowany wzorzec, z standardowe ciągi formatu daty i godziny tabeli.
Jeśli nie używasz separatorów daty lub godziny we wzorcu formatu niestandardowego, użyj niezmiennej kultury dla parametru provider
i najszerszej formy każdego specyfikatora formatu niestandardowego. Jeśli na przykład chcesz określić godziny we wzorcu, określ szerszy formularz "HH", zamiast węższego formularza "H".
Nuta
Zamiast wymagać, aby s
były zgodne z pojedynczym formatem operacji analizowania, można wywołać metodę DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) i określić wiele dozwolonych formatów. Dzięki temu operacja analizy będzie bardziej prawdopodobna.
Określone symbole i ciągi daty i godziny (takie jak nazwy dni tygodnia w określonym języku) używane w s
są definiowane przez parametr provider
, podobnie jak dokładny format s
, jeśli format
jest standardowym ciągiem specyfikatora formatu. Parametr provider
może być dowolny z następujących:
Obiekt CultureInfo reprezentujący kulturę używaną do interpretowania
s
. Obiekt DateTimeFormatInfo zwrócony przez jego właściwość DateTimeFormat definiuje symbole i formatowanie ws
.Obiekt DateTimeFormatInfo, który definiuje format danych daty i godziny.
Niestandardowa implementacja IFormatProvider, której metoda GetFormat zwraca obiekt CultureInfo lub obiekt DateTimeFormatInfo, który udostępnia informacje o formatowaniu.
Jeśli provider
jest null
, używany jest obiekt CultureInfo odpowiadający bieżącej kulturze.
Parametr styles
zawiera jeden lub więcej elementów członkowskich wyliczenia DateTimeStyles, które określają, czy i gdzie białe znaki niezdefiniowane przez format
mogą pojawić się w s
i które kontrolują dokładne zachowanie operacji analizy. W poniższej tabeli opisano, jak każdy element członkowski wyliczenia DateTimeStyles wpływa na działanie metody TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime).
Element członkowski DateTimeStyles | Opis |
---|---|
AdjustToUniversal | Analizuje s i w razie potrzeby konwertuje go na czas UTC. Jeśli s zawiera przesunięcie strefy czasowej lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeLocal, metoda analizuje ciąg, wywołuje ToUniversalTime, aby przekonwertować zwróconą wartość DateTime na UTC i ustawia właściwość Kind na DateTimeKind.Utc. Jeśli s wskazuje, że reprezentuje utc lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeUniversal, metoda analizuje ciąg, nie wykonuje konwersji strefy czasowej na zwróconą wartość DateTime i ustawia właściwość Kind na DateTimeKind.Utc. We wszystkich innych przypadkach flaga nie ma wpływu. |
AllowInnerWhite | Określa, że białe znaki niezdefiniowane przez format mogą występować między dowolnym pojedynczym elementem daty lub godziny. |
AllowLeadingWhite | Określa, że białe znaki niezdefiniowane przez format mogą pojawić się na początku s . |
AllowTrailingWhite | Określa, że białe znaki niezdefiniowane przez format mogą pojawić się na końcu s . |
AllowWhiteSpaces | Określa, że s może zawierać wiodące, wewnętrzne i końcowe białe spacje niezdefiniowane przez format . |
AssumeLocal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje czas lokalny. Chyba że flaga DateTimeStyles.AdjustToUniversal jest obecna, właściwość Kind zwróconej wartości DateTime jest ustawiona na wartość DateTimeKind.Local. |
AssumeUniversal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje utc. Chyba że flaga DateTimeStyles.AdjustToUniversal jest obecna, metoda konwertuje zwróconą wartość DateTime z czasu UTC na czas lokalny i ustawia jej właściwość Kind na wartość DateTimeKind.Local. |
NoCurrentDateDefault | Jeśli s zawiera godzinę bez informacji o dacie, data zwracanej wartości zostanie ustawiona na DateTime.MinValue.Date . |
None | Parametr s jest analizowany przy użyciu wartości domyślnych. Brak odstępu innego niż ten obecny w format jest dozwolony. Jeśli s nie ma składnika daty, data zwróconej wartości DateTime jest ustawiona na 1/1/0001. Jeśli s nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest ustawiona na wartość DateTimeKind.Unspecified. Jeśli informacje o strefie czasowej znajdują się w s , czas jest konwertowany na czas lokalny, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na wartość DateTimeKind.Local. |
RoundtripKind | W przypadku ciągów zawierających informacje o strefie czasowej próbuje zapobiec konwersji na wartość DateTime z właściwością Kind ustawioną na wartość DateTimeKind.Local. Ta flaga zapobiega przede wszystkim konwersji godzin UTC na czas lokalny. |
Uwagi dotyczące wywoływania
W programie .NET Framework 4 metoda TryParseExact zwraca false
, jeśli ciąg, który ma zostać przeanalizowany, zawiera składnik godziny i projektant AM/PM, które nie są zgodne. W programie .NET Framework 3.5 i starszych wersjach projektant am/PM jest ignorowany.
Zobacz też
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- analizowanie ciągów daty i godziny w programie .NET Framework
- standardowe ciągi formatu daty i godziny
- niestandardowe ciągi formatu daty i godziny
Dotyczy
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
- Źródło:
- DateTime.cs
Konwertuje określoną reprezentację ciągu daty i godziny na równoważną DateTime przy użyciu określonej tablicy formatów, informacji o formacie specyficznym dla kultury i stylu. Format reprezentacji ciągu musi być dokładnie zgodny z co najmniej jednym z określonych formatów. Metoda zwraca wartość wskazującą, czy konwersja powiodła się.
public:
static bool TryParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Parametry
- s
- String
Ciąg zawierający datę i godzinę do przekonwertowania.
- formats
- String[]
Tablica dozwolonych formatów s
.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formacie specyficznym dla kultury na temat s
.
- style
- DateTimeStyles
Bitowa kombinacja wartości wyliczenia wskazująca dozwolony format s
. Typową wartością do określenia jest None.
- result
- DateTime
Gdy ta metoda zwróci wartość DateTime równoważną dacie i godzinie zawartej w s
, jeśli konwersja zakończyła się pomyślnie, lub DateTime.MinValue, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli s
lub formats
jest null
, s
lub element formats
jest pustym ciągiem lub format s
nie jest dokładnie taki jak określony przez co najmniej jeden wzorzec formatu w formats
. Ten parametr jest przekazywany niezainicjowany.
Zwraca
true
, jeśli parametr s
został pomyślnie przekonwertowany; w przeciwnym razie false
.
Wyjątki
style
nie jest prawidłową wartością DateTimeStyles.
-lub-
style
zawiera nieprawidłową kombinację wartości DateTimeStyles (na przykład AssumeLocal i AssumeUniversal).
Przykłady
W poniższym przykładzie użyto metody DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime), aby upewnić się, że ciąg w wielu możliwych formatach można pomyślnie przeanalizować .
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
"5/1/2009 6:32:00", "05/01/2009 06:32",
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"};
DateTime dateValue;
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
}
}
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
open System
open System.Globalization
let formats=
[| "M/d/yyyy h:mm:ss tt"; "M/d/yyyy h:mm tt"
"MM/dd/yyyy hh:mm:ss"; "M/d/yyyy h:mm:ss"
"M/d/yyyy hh:mm tt"; "M/d/yyyy hh tt"
"M/d/yyyy h:mm"; "M/d/yyyy h:mm"
"MM/dd/yyyy hh:mm"; "M/dd/yyyy hh:mm" |]
let dateStrings =
[ "5/1/2009 6:32 PM"; "05/01/2009 6:32:05 PM"
"5/1/2009 6:32:00"; "05/01/2009 06:32"
"05/01/2009 06:32:00 PM"; "05/01/2009 06:32:00" ]
for dateString in dateStrings do
match DateTime.TryParseExact(dateString, formats, CultureInfo "en-US", DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue}."
| _ ->
printfn $"Unable to convert '{dateString}' to a date."
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
"M/d/yyyy h:mm", "M/d/yyyy h:mm", _
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}
Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
"5/1/2009 6:32:00", "05/01/2009 06:32", _
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}
Dim dateValue As DateTime
For Each dateString As String In dateStrings
If Date.TryParseExact(dateString, formats, _
New CultureInfo("en-US"), _
DateTimeStyles.None, _
dateValue) Then
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
Else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
End If
Next
End Sub
End Module
' The example displays the following output:
' Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
' Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Uwagi
Metoda DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) analizuje ciąg reprezentujący datę zgodną z dowolnym wzorcem przypisanym do parametru formats
. Jest jak metoda DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), z wyjątkiem metody TryParseExact nie zgłasza wyjątku, jeśli konwersja nie powiedzie się.
Parametr s
zawiera datę i godzinę analizy. Jeśli parametr s
zawiera tylko godzinę i nie datę, bieżąca data jest używana, chyba że parametr style
zawiera flagę DateTimeStyles.NoCurrentDateDefault, w tym przypadku jest używana domyślna data (DateTime.Date.MinValue
). Jeśli parametr s
zawiera tylko datę i bez godziny, zostanie użyta północ (00:00:00). Parametr style
określa również, czy parametr s
może zawierać znaki wiodące, wewnętrzne lub końcowe odstępy inne niż te dozwolone przez jeden z ciągów formatu w formats
.
Jeśli s
nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest DateTimeKind.Unspecified. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.AssumeLocal, która zwraca wartość DateTime, której właściwość Kind jest DateTimeKind.Locallub przy użyciu flag DateTimeStyles.AssumeUniversal i DateTimeStyles.AdjustToUniversal, która zwraca wartość DateTime, której właściwość Kind jest DateTimeKind.Utc. Jeśli s zawiera informacje o strefie czasowej, czas jest konwertowany na czas lokalny, w razie potrzeby, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na DateTimeKind.Local. To zachowanie można zmienić przy użyciu flagi DateTimeStyles.RoundtripKind, aby nie konwertować uniwersalnego czasu koordynowanego (UTC) na czas lokalny i ustawić właściwość Kind na wartość DateTimeKind.Utc.
Parametr formats
zawiera tablicę wzorców, z których jedna s
musi być zgodna dokładnie, jeśli operacja analizy zakończy się pomyślnie. Wzorce w parametrze formats
składają się z co najmniej jednego specyfikatora formatu niestandardowego z ciągów formatu niestandardowego daty i godziny tabeli lub jednego standardowego specyfikatora formatu, który identyfikuje wstępnie zdefiniowany wzorzec, z tabeli standardowych ciągów formatu daty i godziny.
Jeśli nie używasz separatorów daty lub godziny we wzorcu formatu niestandardowego, użyj niezmiennej kultury dla parametru provider
i najszerszej formy każdego specyfikatora formatu niestandardowego. Jeśli na przykład chcesz określić godziny we wzorcu, określ szerszy formularz "HH", zamiast węższego formularza "H".
Określone symbole i ciągi daty i godziny (takie jak nazwy dni tygodnia w określonym języku) używane w s
są definiowane przez parametr provider
, podobnie jak dokładny format s
, jeśli format
jest standardowym ciągiem specyfikatora formatu. Parametr provider
może być dowolny z następujących:
Obiekt CultureInfo reprezentujący kulturę używaną do interpretowania
s
. Obiekt DateTimeFormatInfo zwrócony przez jego właściwość DateTimeFormat definiuje symbole i formatowanie ws
.Obiekt DateTimeFormatInfo, który definiuje format danych daty i godziny.
Niestandardowa implementacja IFormatProvider, której metoda GetFormat zwraca obiekt CultureInfo lub obiekt DateTimeFormatInfo, który udostępnia informacje o formatowaniu.
Jeśli provider
jest null
, używany jest obiekt CultureInfo odpowiadający bieżącej kulturze.
Parametr styles
zawiera jeden lub więcej elementów członkowskich wyliczenia DateTimeStyles, które określają, czy i gdzie białe znaki niezdefiniowane przez format
mogą pojawić się w s
i które kontrolują dokładne zachowanie operacji analizy. W poniższej tabeli opisano, jak każdy element członkowski wyliczenia DateTimeStyles wpływa na działanie metody TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime).
Element członkowski DateTimeStyles | Opis |
---|---|
AdjustToUniversal | Analizuje s i w razie potrzeby konwertuje go na czas UTC. Jeśli s zawiera przesunięcie strefy czasowej lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeLocal, metoda analizuje ciąg, wywołuje ToUniversalTime, aby przekonwertować zwróconą wartość DateTime na UTC i ustawia właściwość Kind na DateTimeKind.Utc. Jeśli s wskazuje, że reprezentuje utc lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeUniversal, metoda analizuje ciąg, nie wykonuje konwersji strefy czasowej na zwróconą wartość DateTime i ustawia właściwość Kind na DateTimeKind.Utc. We wszystkich innych przypadkach flaga nie ma wpływu. |
AllowInnerWhite | Określa, że białe znaki niezdefiniowane przez format mogą występować między dowolnym pojedynczym elementem daty lub godziny. |
AllowLeadingWhite | Określa, że białe znaki niezdefiniowane przez format mogą pojawić się na początku s . |
AllowTrailingWhite | Określa, że białe znaki niezdefiniowane przez format mogą pojawić się na końcu s . |
AllowWhiteSpaces | Określa, że s może zawierać wiodące, wewnętrzne i końcowe białe spacje niezdefiniowane przez format . |
AssumeLocal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje czas lokalny. Chyba że flaga DateTimeStyles.AdjustToUniversal jest obecna, właściwość Kind zwróconej wartości DateTime jest ustawiona na wartość DateTimeKind.Local. |
AssumeUniversal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje utc. Chyba że flaga DateTimeStyles.AdjustToUniversal jest obecna, metoda konwertuje zwróconą wartość DateTime z czasu UTC na czas lokalny i ustawia jej właściwość Kind na wartość DateTimeKind.Local. |
NoCurrentDateDefault | Jeśli s zawiera godzinę bez informacji o dacie, data zwracanej wartości zostanie ustawiona na DateTime.MinValue.Date . |
None | Parametr s jest analizowany przy użyciu wartości domyślnych. Brak odstępu innego niż ten obecny w format jest dozwolony. Jeśli s nie ma składnika daty, data zwróconej wartości DateTime jest ustawiona na 1/1/0001. Jeśli s nie zawiera informacji o strefie czasowej, właściwość Kind zwróconego obiektu DateTime jest ustawiona na wartość DateTimeKind.Unspecified. Jeśli informacje o strefie czasowej znajdują się w s , czas jest konwertowany na czas lokalny, a właściwość Kind zwróconego obiektu DateTime jest ustawiona na wartość DateTimeKind.Local. |
RoundtripKind | W przypadku ciągów zawierających informacje o strefie czasowej próbuje zapobiec konwersji na wartość DateTime z właściwością Kind ustawioną na wartość DateTimeKind.Local. Ta flaga zapobiega przede wszystkim konwersji godzin UTC na czas lokalny. |
Uwagi dotyczące wywoływania
W programie .NET Framework 4 metoda TryParseExact zwraca false
, jeśli ciąg, który ma zostać przeanalizowany, zawiera składnik godziny i projektant AM/PM, które nie są zgodne. W programie .NET Framework 3.5 i starszych wersjach projektant am/PM jest ignorowany.
Zobacz też
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- analizowanie ciągów daty i godziny w programie .NET Framework
- standardowe ciągi formatu daty i godziny
- niestandardowe ciągi formatu daty i godziny