Udostępnij za pośrednictwem


DateTime.TryParseExact Metoda

Definicja

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.Datelub 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:

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ż

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:

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ż

Dotyczy