Sdílet prostřednictvím


DateTime.TryParseExact Metoda

Definice

Převede zadanou řetězcovou reprezentaci data a času na jeho DateTime ekvivalent. Formát řetězcové reprezentace musí přesně odpovídat zadanému formátu. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

Přetížení

Name Description
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

Převede zadanou reprezentaci data a času na ekvivalent DateTime pomocí zadaného formátu, informací o formátu specifickém pro jazykovou verzi a stylu. Formát řetězcové reprezentace se musí přesně shodovat se zadaným formátem. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

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

Převede zadané rozsahy znaků data a času na jeho DateTime ekvivalent a vrátí hodnotu, která označuje, zda převod proběhl úspěšně.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Převede zadanou řetězcovou reprezentaci data a času na ekvivalent DateTime pomocí zadaného formátu, informací o formátu specifickém pro jazykovou verzi a stylu. Formát řetězcové reprezentace se musí přesně shodovat se zadaným formátem. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

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

Převede zadanou řetězcovou reprezentaci data a času na ekvivalent DateTime pomocí zadaného pole formátů, informací o formátu specifickém pro jazyk a styl. Formát řetězcové reprezentace musí přesně odpovídat jednomu ze zadaných formátů. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

Poznámky

Důležitý

Éry v japonských kalendářích jsou založeny na vládě císaře, a proto se očekává, že se změní. Například 1. května 2019 označilo začátek období Reiwa v JapaneseCalendar a JapaneseLunisolarCalendar. Taková změna éry ovlivňuje všechny aplikace, které tyto kalendáře používají. Další informace a určení, zda jsou ovlivněny vaše aplikace, naleznete v tématu Zpracování nové éry v japonském kalendáři v .NET. Informace o testování aplikací v systémech Windows za účelem zajištění připravenosti na změnu v éře najdete v tématu Příprava aplikace na změnu japonské éry. Funkce v .NET, které podporují kalendáře s více obdobími a osvědčené postupy při práci s kalendáři, které podporují více období, najdete v tématu Práce s obdobími.

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

Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs

Převede zadanou reprezentaci data a času na ekvivalent DateTime pomocí zadaného formátu, informací o formátu specifickém pro jazykovou verzi a stylu. Formát řetězcové reprezentace se musí přesně shodovat se zadaným formátem. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

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>

Rozsah obsahující znaky představující datum a čas pro převod.

format
ReadOnlySpan<Char>

Požadovaný formát .s

provider
IFormatProvider

Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .

style
DateTimeStyles

Bitová kombinace jedné nebo více hodnot výčtu, která označuje povolený formát s.

result
DateTime

Pokud tato metoda vrátí, obsahuje DateTime hodnotu ekvivalentní datu a času obsažené v s, pokud převod byl úspěšný, nebo DateTime.MinValue v případě selhání převodu. Převod selže, pokud s je buď nebo format parametr , je prázdný řetězec, nebo neobsahuje datum a čas, které odpovídají vzoru zadanému v formatnull. Tento parametr se předává neinicializovaný.

Návraty

true pokud s byl úspěšně převeden; jinak , false.

Výjimky

Délka format je 1 a není to jeden ze specifikátorů formátu definovaných pro DateTimeFormatInfo.

-nebo-

format neobsahuje platný vzor vlastního formátu.

style není platná DateTimeStyles hodnota.

-nebo-

style obsahuje neplatnou kombinaci DateTimeStyles hodnot (například obojí AssumeLocal i AssumeUniversal).

Platí pro

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

Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs

Převede zadané rozsahy znaků data a času na jeho DateTime ekvivalent a vrátí hodnotu, která označuje, zda převod proběhl úspěšně.

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>

Rozsah obsahující řetězec, který se má analyzovat.

formats
String[]

Pole povolených formátů .s

provider
IFormatProvider

Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .

style
DateTimeStyles

Bitová kombinace hodnot výčtu, která definuje, jak interpretovat parsované datum ve vztahu k aktuálnímu časovému pásmu nebo aktuálnímu datu. Typická hodnota, kterou je třeba zadat, je None.

result
DateTime

Pokud tato metoda vrátí, obsahuje DateTime hodnotu ekvivalentní datu a času obsažené v s, pokud převod byl úspěšný, nebo DateTime.MinValue v případě selhání převodu. Převod selže, pokud s je parametr , je nullEmptynebo neobsahuje platnou řetězcovou reprezentaci data a času. Tento parametr se předává neinicializovaný.

Návraty

true pokud s byl úspěšně převeden; jinak , false.

Výjimky

Délka prvku je formats 1 a není to jeden ze specifikátorů formátu definovaných pro DateTimeFormatInfo.

style není platná DateTimeStyles hodnota.

-nebo-

style obsahuje neplatnou kombinaci DateTimeStyles hodnot (například obojí AssumeLocal i AssumeUniversal).

Platí pro

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs

Převede zadanou řetězcovou reprezentaci data a času na ekvivalent DateTime pomocí zadaného formátu, informací o formátu specifickém pro jazykovou verzi a stylu. Formát řetězcové reprezentace se musí přesně shodovat se zadaným formátem. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

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

Řetězec obsahující datum a čas pro převod.

format
String

Požadovaný formát .s

provider
IFormatProvider

Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .

style
DateTimeStyles

Bitová kombinace jedné nebo více hodnot výčtu, která označuje povolený formát s.

result
DateTime

Pokud tato metoda vrátí, obsahuje DateTime hodnotu ekvivalentní datu a času obsažené v s, pokud převod byl úspěšný, nebo DateTime.MinValue v případě selhání převodu. Převod selže, pokud s je buď nebo format parametr , je prázdný řetězec, nebo neobsahuje datum a čas, které odpovídají vzoru zadanému v formatnull. Tento parametr se předává neinicializovaný.

Návraty

true pokud s byl úspěšně převeden; jinak , false.

Výjimky

Délka format je 1 a není to jeden ze specifikátorů formátu definovaných pro DateTimeFormatInfo.

-nebo-

format neobsahuje platný vzor vlastního formátu.

style není platná DateTimeStyles hodnota.

-nebo-

style obsahuje neplatnou kombinaci DateTimeStyles hodnot (například obojí AssumeLocal i AssumeUniversal).

Příklady

Následující příklad ukazuje metodu DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) . Všimněte si, že řetězec "5/01/2009 8:30 AM" nelze úspěšně analyzovat, pokud se styles parametr rovná, protože počáteční mezery DateTimeStyles.None nejsou povoleny format. Kromě toho řetězec "5/01/2009 09:00" nelze úspěšně analyzovat s format "MM/dd/yhh:mm", protože řetězec kalendářního data před číslem měsíce s úvodní nulou, jak format vyžaduje.

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).

Poznámky

Metoda DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) analyzuje řetězcovou reprezentaci data, která musí být ve formátu definovaném parametrem format . Podobá se DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) metodě, s tím rozdílem, že TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metoda nevyvolá výjimku, pokud převod selže.

Parametr s obsahuje datum a čas k analýze a musí být ve formátu definovaném parametrem format . Pokud jsou prvky data, času a časového pásma přítomny s, musí se objevit také v pořadí určeném format. Pokud format definuje datum bez časového prvku a operace analýzy proběhne úspěšně, výsledná DateTime hodnota má čas půlnoci (00:00:00). Pokud format definuje čas bez prvku data a operace analýzy proběhne úspěšně, výsledná DateTime hodnota má ve výchozím nastavení datum nebo má datumDateTime.Now.DateDateTime.MinValue.Date, kdy styles obsahuje DateTimeStyles.NoCurrentDateDefault příznak. Parametr style určuje, zda s parametr může obsahovat počáteční, vnitřní nebo koncové prázdné znaky.

Pokud s neobsahuje žádné informace o časovém pásmu, Kind vlastnost vráceného DateTime objektu je DateTimeKind.Unspecified. Toto chování lze změnit pomocí příznaku DateTimeStyles.AssumeLocal , který vrací DateTime hodnotu, jejíž Kind vlastnost je DateTimeKind.Local, nebo pomocí DateTimeStyles.AssumeUniversal a DateTimeStyles.AdjustToUniversal příznaky, která vrací DateTime hodnotu, jejíž Kind vlastnost je DateTimeKind.Utc. Pokud s obsahuje informace o časovém pásmu, čas se v případě potřeby převede na místní čas a Kind vlastnost vráceného DateTime objektu je nastavena na DateTimeKind.Local. Toto chování lze změnit pomocí příznaku DateTimeStyles.RoundtripKind tak, aby nepřeveďte koordinovaný univerzální čas (UTC) na místní čas a nastavte Kind vlastnost na DateTimeKind.Utc.

Parametr format obsahuje vzor, který odpovídá očekávanému formátu parametru s . Vzor v parametru format se skládá z jednoho nebo více specifikátorů vlastního formátu z tabulky Custom Date and Time Format Strings nebo jednoho standardního specifikátoru formátu, který identifikuje předdefinovaný vzor z tabulky Standard Date and Time Format Strings .

Pokud nepoužíváte oddělovače data nebo času ve vlastním formátu, použijte pro parametr invariantní jazykovou verzi provider a nejširší formu specifikátoru vlastního formátu. Pokud například chcete zadat hodiny ve vzoru, zadejte širší tvar "HH" místo užšího tvaru "H".

Poznámka

Místo toho, aby bylo nutné, aby s byla operace analýzy v souladu s jedním formátem, můžete metodu DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) volat a zadat více povolených formátů. Díky tomu bude operace analýzy s větší pravděpodobností úspěšná.

Konkrétní symboly data a času a řetězce (například názvy dnů v týdnu v určitém jazyce) používané s parametrem provider jsou definovány, stejně jako přesný formát s , pokud format je standardní specifikátor formátu řetězce. Parametr provider může být některý z následujících:

Pokud provider je null, CultureInfo objekt, který odpovídá aktuální jazykové verzi je použit.

Parametr styles obsahuje jeden nebo více členů výčtu DateTimeStyles , které určují, zda a kde se mohou objevit prázdné znaky, které nejsou definovány format , s a které řídí přesné chování operace analýzy. Následující tabulka popisuje, jak každý člen výčtu DateTimeStyles ovlivňuje operaci TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metody.

DateTimeStyles – člen Popis
AdjustToUniversal Parsuje s a v případě potřeby ho převede na UTC. Pokud s zahrnuje posun časového pásma, nebo pokud s neobsahuje žádné informace o časovém pásmu, ale styles obsahuje DateTimeStyles.AssumeLocal příznak, metoda analyzuje řetězec, zavolá ToUniversalTime k převezení vrácené DateTime hodnoty na UTC a nastaví Kind vlastnost na DateTimeKind.Utc. Pokud s označuje, že představuje UTC, nebo pokud s neobsahuje informace o časovém pásmu, ale styles obsahuje DateTimeStyles.AssumeUniversal příznak, metoda parsuje řetězec, neprovádí převod časového pásma na vrácenou DateTime hodnotu a nastaví Kind vlastnost na DateTimeKind.Utc. Ve všech ostatních případech nemá příznak žádný vliv.
AllowInnerWhite Určuje, že prázdné znaky, které nejsou definovány, mohou být zobrazeny mezi libovolným prvkem format data nebo času.
AllowLeadingWhite Určuje, že prázdné znaky, které nejsou definoványformat, mohou být zobrazeny na začátku .s
AllowTrailingWhite Určuje, že prázdné znaky, které nejsou definoványformat, mohou být zobrazeny na konci .s
AllowWhiteSpaces Určuje, že s může obsahovat úvodní, vnitřní a koncové prázdné znaky, které nejsou definovány format.
AssumeLocal Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se, že představuje místní čas. Pokud není příznak DateTimeStyles.AdjustToUniversal přítomen, vlastnost Kind vrácené hodnoty DateTime je nastavena na DateTimeKind.Local.
AssumeUniversal Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se, že představuje UTC. DateTimeStyles.AdjustToUniversal Pokud není příznak přítomen, metoda převede vrácenou DateTime hodnotu z UTC na místní čas a nastaví jeho Kind vlastnost na DateTimeKind.Local.
NoCurrentDateDefault Pokud s obsahuje čas bez informací o datu, je datum návratové hodnoty nastaveno na DateTime.MinValue.Datehodnotu .
None Parametr s se analyzuje pomocí výchozích hodnot. Nejsou povoleny žádné prázdné znaky, které jsou přítomné.format Pokud s chybí součást data, je datum vrácené DateTime hodnoty nastaveno na 1.1.0001. Pokud s neobsahuje žádné informace o časovém pásmu, Kind vlastnost vráceného DateTime objektu je nastavena na DateTimeKind.Unspecified. Pokud jsou informace o sčasovém pásmu přítomny , čas se převede na místní čas a Kind vlastnost vráceného DateTime objektu je nastavena na DateTimeKind.Local.
RoundtripKind U řetězců, které obsahují informace o časovém pásmu, se pokusí zabránit převodu DateTime na hodnotu s jeho Kind vlastností nastavenou na DateTimeKind.Local. Tento příznak primárně zabraňuje převodu časů UTC na místní časy.

Poznámky pro volající

V rozhraní .NET Framework 4 vrátí false metoda, pokud řetězec, TryParseExact který se má analyzovat, obsahuje hodinovou komponentu a designátor AM/PM, který není ve smlouvě. V rozhraní .NET Framework 3.5 a starších verzích se návrh AM/PM ignoruje.

Viz také

Platí pro

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

Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs
Zdroj:
DateTime.cs

Převede zadanou řetězcovou reprezentaci data a času na ekvivalent DateTime pomocí zadaného pole formátů, informací o formátu specifickém pro jazyk a styl. Formát řetězcové reprezentace musí přesně odpovídat jednomu ze zadaných formátů. Metoda vrátí hodnotu, která označuje, zda převod byl úspěšný.

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

Řetězec, který obsahuje datum a čas pro převod.

formats
String[]

Pole povolených formátů .s

provider
IFormatProvider

Objekt, který poskytuje informace o formátu specifickém pro jazykovou verzi .s

style
DateTimeStyles

Bitová kombinace hodnot výčtu, která označuje povolený formát s. Typická hodnota, kterou je třeba zadat, je None.

result
DateTime

Pokud tato metoda vrátí, obsahuje DateTime hodnotu ekvivalentní datu a času obsažené v s, pokud převod byl úspěšný, nebo DateTime.MinValue v případě selhání převodu. Převod selže, pokud s nebo je nulls nebo formats je nebo prvek formats je prázdný řetězec, nebo formát s není přesně určený alespoň jedním ze vzorů formátu v formats. Tento parametr se předává neinicializovaný.

Návraty

true s pokud byl parametr úspěšně převeden; v opačném případě false.

Výjimky

Délka prvku je formats 1 a není to jeden ze specifikátorů formátu definovaných pro DateTimeFormatInfo.

style není platná DateTimeStyles hodnota.

-nebo-

style obsahuje neplatnou kombinaci DateTimeStyles hodnot (například obojí AssumeLocal i AssumeUniversal).

Příklady

Následující příklad používá metodu DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) k zajištění, že řetězec v řadě možných formátů lze úspěšně analyzovat .

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.

Poznámky

Metoda DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) parsuje řetězcovou reprezentaci data, které odpovídá libovolnému vzoru přiřazeného k parametru formats . Je to jako metoda DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) , s výjimkou TryParseExact metody nevyvolá výjimku, pokud převod selže.

Parametr s obsahuje datum a čas, které se mají analyzovat. s Pokud parametr obsahuje pouze čas a žádné datum, použije se aktuální datum, pokud style parametr neobsahuje DateTimeStyles.NoCurrentDateDefault příznak, v takovém případě se použije výchozí datum (DateTime.Date.MinValue). s Pokud parametr obsahuje pouze datum a žádný čas, použije se půlnoc (00:00:00). Parametr style také určuje, zda s parametr může obsahovat počáteční, vnitřní nebo koncové prázdné znaky jiné než ty, které jsou povoleny jedním z formátovacích řetězců v formats.

Pokud s neobsahuje žádné informace o časovém pásmu, Kind vlastnost vráceného DateTime objektu je DateTimeKind.Unspecified. Toto chování lze změnit pomocí příznaku DateTimeStyles.AssumeLocal , který vrací DateTime hodnotu, jejíž Kind vlastnost je DateTimeKind.Local, nebo pomocí DateTimeStyles.AssumeUniversal a DateTimeStyles.AdjustToUniversal příznaky, která vrací DateTime hodnotu, jejíž Kind vlastnost je DateTimeKind.Utc. Pokud s obsahuje informace o časovém pásmu, čas se v případě potřeby převede na místní čas a Kind vlastnost vráceného DateTime objektu je nastavena na DateTimeKind.Local. Toto chování lze změnit pomocí příznaku DateTimeStyles.RoundtripKind tak, aby nepřeveďte koordinovaný univerzální čas (UTC) na místní čas a nastavte Kind vlastnost na DateTimeKind.Utc.

Parametr formats obsahuje pole vzorů, z nichž s jedna se musí shodovat přesně v případě, že je operace analýzy úspěšná. Vzory v parametru formats se skládají z jednoho nebo více specifikátorů vlastního formátu z tabulky Vlastní řetězce formátu data a času nebo jednoho standardního specifikátoru formátu, který identifikuje předdefinovaný vzor z tabulky Řetězce formátu standardního data a času .

Pokud nepoužíváte oddělovače data nebo času ve vlastním formátu, použijte pro parametr invariantní jazykovou verzi provider a nejširší formu specifikátoru vlastního formátu. Pokud například chcete zadat hodiny ve vzoru, zadejte širší tvar "HH" místo užšího tvaru "H".

Konkrétní symboly data a času a řetězce (například názvy dnů v týdnu v určitém jazyce) používané s parametrem provider jsou definovány, stejně jako přesný formát s , pokud format je standardní specifikátor formátu řetězce. Parametr provider může být některý z následujících:

Pokud provider je null, CultureInfo objekt, který odpovídá aktuální jazykové verzi je použit.

Parametr styles obsahuje jeden nebo více členů výčtu DateTimeStyles , které určují, zda a kde se mohou objevit prázdné znaky, které nejsou definovány format , s a které řídí přesné chování operace analýzy. Následující tabulka popisuje, jak každý člen výčtu DateTimeStyles ovlivňuje operaci TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) metody.

DateTimeStyles – člen Popis
AdjustToUniversal Parsuje s a v případě potřeby ho převede na UTC. Pokud s zahrnuje posun časového pásma, nebo pokud s neobsahuje žádné informace o časovém pásmu, ale styles obsahuje DateTimeStyles.AssumeLocal příznak, metoda analyzuje řetězec, zavolá ToUniversalTime k převezení vrácené DateTime hodnoty na UTC a nastaví Kind vlastnost na DateTimeKind.Utc. Pokud s označuje, že představuje UTC, nebo pokud s neobsahuje informace o časovém pásmu, ale styles obsahuje DateTimeStyles.AssumeUniversal příznak, metoda parsuje řetězec, neprovádí převod časového pásma na vrácenou DateTime hodnotu a nastaví Kind vlastnost na DateTimeKind.Utc. Ve všech ostatních případech nemá příznak žádný vliv.
AllowInnerWhite Určuje, že prázdné znaky, které nejsou definovány, mohou být zobrazeny mezi libovolným prvkem format data nebo času.
AllowLeadingWhite Určuje, že prázdné znaky, které nejsou definoványformat, mohou být zobrazeny na začátku .s
AllowTrailingWhite Určuje, že prázdné znaky, které nejsou definoványformat, mohou být zobrazeny na konci .s
AllowWhiteSpaces Určuje, že s může obsahovat úvodní, vnitřní a koncové prázdné znaky, které nejsou definovány format.
AssumeLocal Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se, že představuje místní čas. Pokud není příznak DateTimeStyles.AdjustToUniversal přítomen, vlastnost Kind vrácené hodnoty DateTime je nastavena na DateTimeKind.Local.
AssumeUniversal Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se, že představuje UTC. DateTimeStyles.AdjustToUniversal Pokud není příznak přítomen, metoda převede vrácenou DateTime hodnotu z UTC na místní čas a nastaví jeho Kind vlastnost na DateTimeKind.Local.
NoCurrentDateDefault Pokud s obsahuje čas bez informací o datu, je datum návratové hodnoty nastaveno na DateTime.MinValue.Datehodnotu .
None Parametr s se analyzuje pomocí výchozích hodnot. Nejsou povoleny žádné prázdné znaky, které jsou přítomné.format Pokud s chybí součást data, je datum vrácené DateTime hodnoty nastaveno na 1.1.0001. Pokud s neobsahuje žádné informace o časovém pásmu, Kind vlastnost vráceného DateTime objektu je nastavena na DateTimeKind.Unspecified. Pokud jsou informace o sčasovém pásmu přítomny , čas se převede na místní čas a Kind vlastnost vráceného DateTime objektu je nastavena na DateTimeKind.Local.
RoundtripKind U řetězců, které obsahují informace o časovém pásmu, se pokusí zabránit převodu DateTime na hodnotu s jeho Kind vlastností nastavenou na DateTimeKind.Local. Tento příznak primárně zabraňuje převodu časů UTC na místní časy.

Poznámky pro volající

V rozhraní .NET Framework 4 vrátí false metoda, pokud řetězec, TryParseExact který se má analyzovat, obsahuje hodinovou komponentu a designátor AM/PM, který není ve smlouvě. V rozhraní .NET Framework 3.5 a starších verzích se návrh AM/PM ignoruje.

Viz také

Platí pro