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 odpowiednik DateTime . Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. 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 odpowiednik DateTime przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. 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 odpowiednik DateTime 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 odpowiednik DateTime przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. 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żne
Ery w kalendarzach japońskich są oparte na suchem rzeszy i w związku z tym oczekuje się, że zmienią się. Na przykład 1 maja 2019 r. oznaczał początek ery Reiwa w i JapaneseCalendar JapaneseLunisolarCalendar . Taka zmiana ery ma wpływ na wszystkie aplikacje, które używają tych kalendarzy. Aby uzyskać więcej informacji i określić, czy dotyczy to aplikacji, zobacz Obsługa nowej ery w kalendarzu japońskim na platformie .NET. Aby uzyskać informacje na temat testowania aplikacji w Windows w celu zapewnienia ich gotowości na zmianę ery, zobacz Przygotowanie aplikacji na zmianę ery japońskiej. Aby uzyskać informacje o funkcjach na platformie .NET, które obsługują kalendarze z wieloma erami, oraz o najlepszych rozwiązaniach podczas pracy z kalendarzami, które obsługują wiele er, zobacz Praca z erami.
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
Konwertuje określoną reprezentację zakresu daty i godziny na odpowiednik DateTime przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. 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.s
- style
- DateTimeStyles
Bitowa kombinacja co najmniej jednej wartości wyliczenia, która wskazuje dozwolony format s
.
- result
- DateTime
Gdy ta metoda zwróci wartość równoważną dacie i godzinie zawartej DateTime w s
metodzie , 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
ma null
wartość , jest pustym ciągiem lub nie zawiera daty i godziny odpowiadającej wzorzec określony w format
elemecie . Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
jeśli s
pomyślnie została przekonwertowana; w przeciwnym razie false
.
Dotyczy
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
Konwertuje określony zakres znaków daty i godziny na odpowiednik DateTime 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.s
- style
- DateTimeStyles
Bitowa kombinacja wartości wyliczenia, która definiuje 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ść równoważną dacie i godzinie zawartej DateTime w s
metodzie , 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
parametr ma null
wartość , jest Emptylub nie zawiera prawidłowej reprezentacji ciągu daty i godziny. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
s
jeśli parametr został pomyślnie przekonwertowany; w przeciwnym razie false
.
Dotyczy
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
Konwertuje określoną reprezentację ciągu daty i godziny na odpowiednik DateTime przy użyciu określonego formatu, informacji o formacie specyficznym dla kultury i stylu. Format ciągu reprezentującego musi dokładnie pasować do wskazanego formatu. 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ę konwersji.
- format
- String
Wymagany format .s
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.s
- style
- DateTimeStyles
Bitowa kombinacja co najmniej jednej wartości wyliczenia, która wskazuje dozwolony format s
.
- result
- DateTime
Gdy ta metoda zwróci wartość równoważną dacie i godzinie zawartej DateTime w s
metodzie , 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
ma null
wartość , jest pustym ciągiem lub nie zawiera daty i godziny odpowiadającej wzorzec określony w format
elemecie . Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
jeśli s
pomyślnie została przekonwertowana; w przeciwnym razie false
.
Wyjątki
styles
jest nieprawidłową DateTimeStyles wartością.
-lub-
styles
zawiera nieprawidłową kombinację DateTimeStyles wartości (na przykład i AssumeLocal AssumeUniversal).
Przykłady
W poniższym przykładzie pokazano metodę DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) . Zwróć uwagę, że ciąg "5/01/2009 8:30 AM" nie może zostać przeanalizowany pomyślnie, gdy styles
parametr jest równy DateTimeStyles.None , ponieważ spacje wiodące nie są dozwolone przez format
. Ponadto ciąg "5/01/2009 09:00" nie może zostać przeanalizowany pomyślnie z wartością format
"MM/dd/rrrr:mm", ponieważ ciąg daty nie poprzedza numeru miesiąca z wiodącym zerem, zgodnie format
z wymaganiami.
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 format
przez parametr . Jest ona podobna DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) do metody, z tą różnicą, że TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metoda nie zgłasza wyjątku w przypadku niepowodzenia konwersji.
Parametr s
zawiera datę i godzinę analizowania i musi być w formacie zdefiniowanym format
przez parametr . Jeśli elementy daty, godziny i strefy czasowej znajdują się w s
elemecie , 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 DateTime wartość ma godzinę północy (00:00:00). Jeśli format
definiuje godzinę bez elementu daty i operacja analizy zakończy się powodzeniem, wynikowa DateTime wartość domyślnie ma datę lub ma datęDateTime.Now.Date``DateTime.MinValue.Date
, jeśli styles
zawiera flagęDateTimeStyles.NoCurrentDateDefault. Parametr style
określa, czy s
parametr może zawierać znaki wiodące, wewnętrzne lub końcowe odstępy.
Jeśli s
nie zawiera informacji o strefie czasowej, Kind właściwość zwracanego DateTime obiektu to DateTimeKind.Unspecified. To zachowanie można zmienić przy użyciu DateTimeStyles.AssumeLocal flagi, która zwraca DateTime wartość, której Kind właściwość to DateTimeKind.Local, lub przy użyciu DateTimeStyles.AssumeUniversal flag i DateTimeStyles.AdjustToUniversal , które zwracają DateTime wartość, której Kind właściwość to DateTimeKind.Utc. Jeśli element zawiera informacje o strefie czasowej, czas jest konwertowany na czas lokalny, w razie potrzeby, a Kind właściwość zwróconego DateTime obiektu jest ustawiona na DateTimeKind.Localwartość . To zachowanie można zmienić za pomocą flagi DateTimeStyles.RoundtripKind , aby nie konwertować uniwersalnego czasu koordynowanego (UTC) na czas lokalny i ustawić Kind właściwość na DateTimeKind.Utc.
Parametr format
zawiera wzorzec odpowiadający oczekiwanemu formatowi parametru s
. Wzorzec w parametrze format
składa się z co najmniej jednego specyfikatora formatu niestandardowego z tabeli Ciągi formatu niestandardowego daty i godziny lub pojedynczego standardowego specyfikatora formatu, który identyfikuje wstępnie zdefiniowany wzorzec z tabeli Ciągi formatu daty i godziny standardowej .
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 chcesz określić na przykład godziny we wzorcu, użyj szerszej formy „GG” zamiast węższej „G”.
Uwaga
Zamiast wymagać s
zapewnienia zgodności z pojedynczym formatem operacji analizy, można wywołać metodę DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) i określić wiele dozwolonych formatów. Dzięki temu operacja analizy prawdopodobnie powiedzie się.
Określone symbole i ciągi daty i godziny (takie jak nazwy dni tygodnia w s
określonym języku) są definiowane przez provider
parametr, 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:
CultureInfo Obiekt reprezentujący kulturę używaną do interpretowania
s
elementu . DateTimeFormatInfo Obiekt zwrócony przez jego DateTimeFormat właściwość definiuje symbole i formatowanie w plikus
.DateTimeFormatInfo Obiekt, który definiuje format danych daty i godziny.
Implementacja niestandardowa IFormatProvider , której GetFormat metoda zwraca CultureInfo obiekt lub DateTimeFormatInfo obiekt, który udostępnia informacje o formatowaniu.
Jeśli provider
jest to null
, CultureInfo używany jest obiekt odpowiadający bieżącej kulturze.
Parametr styles
zawiera co najmniej jeden element członkowny DateTimeStyles wyliczenia, który określa, czy i gdzie nie zdefiniowano odstępu, format
może pojawić się w s
obiekcie i kontrolować dokładne zachowanie operacji analizy. W poniższej tabeli opisano, jak każdy element członkowski DateTimeStyles wyliczenia wpływa na działanie TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metody.
Element członkowski DateTimeStyles | Opis |
---|---|
AdjustToUniversal | Analizuje i, w razie potrzeby, konwertuje s go na UTC. Jeśli s zawiera przesunięcie strefy czasowej lub jeśli s nie zawiera żadnych informacji o strefie czasowej, ale styles zawiera DateTimeStyles.AssumeLocal flagę, metoda analizuje ciąg, wywołuje ToUniversalTime konwersję zwróconej DateTime wartości na UTC i ustawia Kind właściwość na DateTimeKind.Utc. Jeśli s wskazuje, że reprezentuje czas 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ą DateTime wartość i ustawia Kind właściwość na DateTimeKind.Utc. We wszystkich innych przypadkach flaga nie wywiera żadnego wpływu. |
AllowInnerWhite | Określa, że odstępy niezdefiniowane przez format mogą występować między poszczególnymi elementami daty lub godziny. |
AllowLeadingWhite | Określa, że odstęp niezdefiniowany przez format program może pojawić się na początku .s |
AllowTrailingWhite | Określa, że biały znak niezdefiniowany przez format może pojawić się na końcu elementu s . |
AllowWhiteSpaces | Określa, że s mogą 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, zakłada się, że reprezentuje czas lokalny. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, Kind właściwość zwróconej DateTime wartości jest ustawiona na DateTimeKind.Localwartość . |
AssumeUniversal | Określa, że jeśli s nie ma żadnych informacji o strefie czasowej, przyjmuje się, że reprezentuje utc. O ile flaga DateTimeStyles.AdjustToUniversal nie jest obecna, metoda konwertuje zwróconą DateTime wartość z czasu UTC na czas lokalny i ustawia jej Kind właściwość na DateTimeKind.Local. |
NoCurrentDateDefault | Jeśli s zawiera godzinę bez informacji o dacie, data zwracanej wartości jest ustawiona na DateTime.MinValue.Date wartość . |
None | Parametr s jest analizowany przy użyciu wartości domyślnych. Dozwolony jest biały odstęp inny niż ten obecny w format . Jeśli s brakuje składnika daty, data zwróconej DateTime wartości jest ustawiona na 1/1/0001. Jeśli s nie zawiera informacji o strefie czasowej, Kind właściwość zwróconego DateTime obiektu jest ustawiona na DateTimeKind.Unspecifiedwartość . Jeśli informacje o strefie czasowej są obecne w s programie , czas jest konwertowany na czas lokalny, a Kind właściwość zwróconego DateTime obiektu jest ustawiona na DateTimeKind.Localwartość . |
RoundtripKind | W przypadku ciągów zawierających informacje o strefie czasowej próbuje zapobiec konwersji na wartość z jej Kind właściwością ustawioną DateTime na DateTimeKind.Local. Ta flaga zapobiega przede wszystkim konwersji czasu UTC na czas lokalny. |
Uwagi dotyczące wywoływania
W .NET Framework 4 metoda zwraca false
wartość , jeśli ciąg do TryParseExact przeanalizowania zawiera składnik godziny i projektator AM/PM, które nie są zgodne. W .NET Framework wersji 3.5 i starszych projektator am/PM jest ignorowany.
Zobacz też
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Analizowanie ciągów daty i godziny w programie .NET Framework
- Standardowe ciągi formatujące datę i godzinę
- Niestandardowe ciągi formatujące datę i godzinę
Dotyczy
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ę.
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ę, które należy przekształcić.
- formats
- String[]
Tablica dozwolonych formatów .s
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formacie specyficznym dla kultury.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ść równoważną dacie i godzinie zawartej DateTime w s
metodzie , 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
elementem lub s
null
formats
formats
elementem jest pusty ciąg lub format s
nie jest dokładnie określony przez co najmniej jeden z wzorców formatu w formats
elemecie . Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
s
jeśli parametr został pomyślnie przekonwertowany; w przeciwnym razie false
.
Wyjątki
styles
jest nieprawidłową DateTimeStyles wartością.
-lub-
styles
zawiera nieprawidłową kombinację DateTimeStyles wartości (na przykład i AssumeLocal AssumeUniversal).
Przykłady
W poniższym przykładzie użyto DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metody , 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 reprezentację ciągu daty zgodnej z dowolnym wzorcem przypisanym do parametru formats
. Jest jak DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) metoda, z wyjątkiem TryParseExact metody nie zgłasza wyjątku, jeśli konwersja nie powiedzie się.
Parametr s
zawiera datę i godzinę analizy. s
Jeśli parametr zawiera tylko godzinę i nie ma daty, bieżąca data jest używana, chyba że style
parametr zawiera flagęDateTimeStyles.NoCurrentDateDefault, w którym przypadku jest używana domyślna data (DateTime.Date.MinValue
). s
Jeśli parametr zawiera tylko datę i nie godzinę, zostanie użyta północ (00:00:00). Parametr style
określa również, czy s
parametr 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 pliku formats
.
Jeśli s
nie zawiera informacji o strefie czasowej, Kind właściwość zwracanego DateTime obiektu to DateTimeKind.Unspecified. To zachowanie można zmienić przy użyciu DateTimeStyles.AssumeLocal flagi, która zwraca DateTime wartość, której Kind właściwość to DateTimeKind.Local, lub przy użyciu DateTimeStyles.AssumeUniversal flag i DateTimeStyles.AdjustToUniversal , które zwracają DateTime wartość, której Kind właściwość to DateTimeKind.Utc. Jeśli element zawiera informacje o strefie czasowej, czas jest konwertowany na czas lokalny, w razie potrzeby, a Kind właściwość zwróconego DateTime obiektu jest ustawiona na DateTimeKind.Localwartość . To zachowanie można zmienić za pomocą flagi DateTimeStyles.RoundtripKind , aby nie konwertować uniwersalnego czasu koordynowanego (UTC) na czas lokalny i ustawić Kind właściwość na DateTimeKind.Utc.
Parametr formats
zawiera tablicę wzorców, z których s
jedna musi być zgodna dokładnie, jeśli operacja analizy powiedzie się. Wzorce w parametrze formats
składają się z co najmniej jednego specyfikatora formatu niestandardowego z tabeli Ciągi niestandardowego formatu daty i godziny lub pojedynczego standardowego specyfikatora formatu, który identyfikuje wstępnie zdefiniowany wzorzec z tabeli Ciągi formatu daty i godziny standardowej .
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 chcesz określić na przykład godziny we wzorcu, użyj szerszej formy „GG” zamiast węższej „G”.
Określone symbole i ciągi daty i godziny (takie jak nazwy dni tygodnia w s
określonym języku) są definiowane przez provider
parametr, 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:
CultureInfo Obiekt reprezentujący kulturę używaną do interpretowania
s
elementu . DateTimeFormatInfo Obiekt zwrócony przez jego DateTimeFormat właściwość definiuje symbole i formatowanie w plikus
.DateTimeFormatInfo Obiekt, który definiuje format danych daty i godziny.
Implementacja niestandardowa IFormatProvider , której GetFormat metoda zwraca CultureInfo obiekt lub DateTimeFormatInfo obiekt, który udostępnia informacje o formatowaniu.
Jeśli provider
jest to null
, CultureInfo używany jest obiekt odpowiadający bieżącej kulturze.
Parametr styles
zawiera co najmniej jeden element członkowny DateTimeStyles wyliczenia, który określa, czy i gdzie nie zdefiniowano odstępu, format
może pojawić się w s
obiekcie i kontrolować dokładne zachowanie operacji analizy. W poniższej tabeli opisano, jak każdy element członkowski DateTimeStyles wyliczenia wpływa na działanie TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) metody.
Element członkowski DateTimeStyles | Opis |
---|---|
AdjustToUniversal | s Analizuje 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 metodę , aby przekonwertować zwróconą DateTime wartość na UTC i ustawia Kind właściwość 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ą DateTime wartość i ustawia Kind właściwość na DateTimeKind.Utcwartość . We wszystkich innych przypadkach flaga nie wywiera żadnego wpływu. |
AllowInnerWhite | Określa, że odstęp niezdefiniowany przez format program może występować między dowolnym pojedynczym elementem daty lub godziny. |
AllowLeadingWhite | Określa, że białe znaki niezdefiniowane przez format program mogą pojawić się na początku .s |
AllowTrailingWhite | Określa, że biały znak niezdefiniowany przez format może być wyświetlany 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. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, Kind właściwość zwróconej DateTime wartości jest ustawiona na DateTimeKind.Localwartość . |
AssumeUniversal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje UTC. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, metoda konwertuje zwracaną DateTime wartość z czasu UTC na czas lokalny i ustawia jej Kind właściwość na DateTimeKind.Local. |
NoCurrentDateDefault | Jeśli s zawiera godzinę bez informacji o dacie, data zwracanej wartości jest ustawiona na wartość DateTime.MinValue.Date . |
None | Parametr s jest analizowany przy użyciu wartości domyślnych. Nie jest dozwolone żadne białe znaki inne niż obecne w format elem. Jeśli s brakuje składnika daty, data zwracanej DateTime wartości jest ustawiona na 1/1/0001. Jeśli s nie zawiera informacji o strefie czasowej, Kind właściwość zwróconego DateTime obiektu jest ustawiona na wartość DateTimeKind.Unspecified. Jeśli informacje o strefie czasowej są obecne w s programie , czas jest konwertowany na czas lokalny, a Kind właściwość zwróconego DateTime obiektu jest ustawiona na DateTimeKind.Localwartość . |
RoundtripKind | W przypadku ciągów zawierających informacje o strefie czasowej próbuje zapobiec konwersji na wartość z jej Kind właściwością ustawioną DateTime na DateTimeKind.Localwartość . Ta flaga zapobiega przede wszystkim konwersji czasu UTC na czas lokalny. |
Uwagi dotyczące wywoływania
W .NET Framework 4 metoda zwraca false
wartość , jeśli ciąg, który ma zostać przeanalizowany, TryParseExact zawiera składnik godziny i projektowania AM/PM, które nie są zgodne. W .NET Framework 3.5 i starszych wersjach projektowania AM/PM jest ignorowany.
Zobacz też
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Analizowanie ciągów daty i godziny w programie .NET Framework
- Standardowe ciągi formatujące datę i godzinę
- Niestandardowe ciągi formatujące datę i godzinę