DateTime.TryParseExact Metod

Definition

Konverterar den angivna strängrepresentationen av ett datum och en tid till motsvarande DateTime . Formatet för strängrepresentationen måste matcha ett angivet format exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

Överlagringar

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

Konverterar den angivna spännviddsrepresentationen av ett datum och en tid till dess DateTime motsvarighet med det angivna formatet, kulturspecifik formatinformation och formatmall. Formatet för strängrepresentationen måste matcha det angivna formatet exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

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

Konverterar det angivna teckenintervallet för ett datum och en tid till dess DateTime motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

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

Konverterar den angivna strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med det angivna formatet, kulturspecifik formatinformation och formatmall. Formatet för strängrepresentationen måste matcha det angivna formatet exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

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

Konverterar den angivna strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av den angivna matrisen med format, kulturspecifik formatinformation och formatmall. Formatet för strängrepresentationen måste matcha minst ett av de angivna formaten exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

Kommentarer

Important

Epoker i de japanska kalendrarna baseras på kejsarens regeringstid och förväntas därför förändras. Den 1 maj 2019 markerade till exempel början av Reiwa-eran i JapaneseCalendar och JapaneseLunisolarCalendar. En sådan ändring av era påverkar alla program som använder dessa kalendrar. Mer information och för att avgöra om dina program påverkas finns i Hantera en ny era i den japanska kalendern i .NET. Information om hur du testar dina program i Windows-system för att säkerställa att de är redo för tidsändringen finns i Förbereda ditt program för ändringen av den japanska eran. Funktioner i .NET som stöder kalendrar med flera epoker och bästa praxis när du arbetar med kalendrar som stöder flera epoker finns i Arbeta med epoker.

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

Konverterar den angivna spännviddsrepresentationen av ett datum och en tid till dess DateTime motsvarighet med det angivna formatet, kulturspecifik formatinformation och formatmall. Formatet för strängrepresentationen måste matcha det angivna formatet exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

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

Parametrar

s
ReadOnlySpan<Char>

Ett intervall som innehåller de tecken som representerar ett datum och en tid som ska konverteras.

format
ReadOnlySpan<Char>

Det format som krävs för s.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

style
DateTimeStyles

En bitvis kombination av ett eller flera uppräkningsvärden som anger det tillåtna formatet för s.

result
DateTime

När den här metoden returneras innehåller värdet DateTime som motsvarar datum och tid i s, om konverteringen lyckades eller DateTime.MinValue om konverteringen misslyckades. Konverteringen misslyckas om antingen parametern s eller format är null, är en tom sträng eller inte innehåller ett datum och en tid som motsvarar mönstret som anges i format. Den här parametern skickas oinitierad.

Returer

true om s har konverterats, annars false.

Undantag

Längden format på är 1 och det är inte ett av formatspecificerarens tecken som definierats för DateTimeFormatInfo.

-eller-

format innehåller inget giltigt anpassat formatmönster.

style är inte ett giltigt DateTimeStyles värde.

-eller-

style innehåller en ogiltig kombination av DateTimeStyles värden (till exempel både AssumeLocal och AssumeUniversal).

Gäller för

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

Konverterar det angivna teckenintervallet för ett datum och en tid till dess DateTime motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

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

Parametrar

s
ReadOnlySpan<Char>

Det intervall som innehåller strängen som ska parsas.

formats
String[]

En matris med tillåtna format för s.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

style
DateTimeStyles

En bitvis kombination av uppräkningsvärden som definierar hur du tolkar det tolkade datumet i förhållande till den aktuella tidszonen eller det aktuella datumet. Ett typiskt värde att ange är None.

result
DateTime

När den här metoden returneras innehåller värdet DateTime som motsvarar datum och tid i s, om konverteringen lyckades eller DateTime.MinValue om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null, är Emptyeller inte innehåller en giltig strängrepresentation av ett datum och en tid. Den här parametern skickas oinitierad.

Returer

true om s har konverterats, annars false.

Undantag

Längden på ett element i formats är 1, och det är inte ett av formatspecificerarens tecken som definierats för DateTimeFormatInfo.

style är inte ett giltigt DateTimeStyles värde.

-eller-

style innehåller en ogiltig kombination av DateTimeStyles värden (till exempel både AssumeLocal och AssumeUniversal).

Gäller för

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

Konverterar den angivna strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med det angivna formatet, kulturspecifik formatinformation och formatmall. Formatet för strängrepresentationen måste matcha det angivna formatet exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

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

Parametrar

s
String

En sträng som innehåller ett datum och en tid som ska konverteras.

format
String

Det format som krävs för s.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

style
DateTimeStyles

En bitvis kombination av ett eller flera uppräkningsvärden som anger det tillåtna formatet för s.

result
DateTime

När den här metoden returneras innehåller värdet DateTime som motsvarar datum och tid i s, om konverteringen lyckades eller DateTime.MinValue om konverteringen misslyckades. Konverteringen misslyckas om antingen parametern s eller format är null, är en tom sträng eller inte innehåller ett datum och en tid som motsvarar mönstret som anges i format. Den här parametern skickas oinitierad.

Returer

true om s har konverterats, annars false.

Undantag

Längden format på är 1 och det är inte ett av formatspecificerarens tecken som definierats för DateTimeFormatInfo.

-eller-

format innehåller inget giltigt anpassat formatmönster.

style är inte ett giltigt DateTimeStyles värde.

-eller-

style innehåller en ogiltig kombination av DateTimeStyles värden (till exempel både AssumeLocal och AssumeUniversal).

Exempel

I följande exempel visas DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metoden. Observera att strängen " 5/01/2009 8:30 AM" inte kan parsas när parametern styles är lika med eftersom inledande blanksteg inte tillåts DateTimeStyles.None av format. Dessutom kan strängen "5/01/2009 09:00" inte parsas korrekt med " format MM/dd/yyyyyhh:mm" eftersom datumsträngen inte föregår månadsnumret med en inledande nolla, som format kräver.

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

Kommentarer

Metoden DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) parsar strängrepresentationen av ett datum, som måste vara i det format som definieras av parametern format . Det liknar DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) metoden, förutom att TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metoden inte utlöser ett undantag om konverteringen misslyckas.

Parametern s innehåller datum och tid som ska parsas och måste vara i ett format som definieras av parametern format . Om elementen datum, tid och tidszon finns i småste de också visas i den ordning som anges av format. Om format definierar ett datum utan tidselement och parsningsåtgärden lyckas, har det resulterande DateTime värdet en tid på midnatt (00:00:00). Om format definierar en tid utan datumelement och parsningsåtgärden lyckas, har det resulterande DateTime värdet som standard ett datum på DateTime.Now.Date, eller så har det ett datum DateTime.MinValue.Date för om styles innehåller DateTimeStyles.NoCurrentDateDefault flaggan. Parametern style avgör om parametern s kan innehålla inledande, inre eller avslutande blankstegstecken.

Om s innehåller ingen tidszonsinformation är DateTimeKind.Unspecifiedegenskapen för Kind det returnerade DateTime objektet . Det här beteendet kan ändras med hjälp DateTimeStyles.AssumeLocal av flaggan, som returnerar ett DateTime värde vars Kind egenskap är DateTimeKind.Local, eller med hjälp av flaggorna DateTimeStyles.AssumeUniversal och DateTimeStyles.AdjustToUniversal som returnerar ett DateTime värde vars Kind egenskap är DateTimeKind.Utc. Om s innehåller tidszonsinformation konverteras tiden till lokal tid, om det behövs, och Kind egenskapen för det returnerade DateTime objektet är inställd på DateTimeKind.Local. Det här beteendet kan ändras med hjälp DateTimeStyles.RoundtripKind av flaggan för att inte konvertera Coordinated Universal Time (UTC) till en lokal tid och ange Kind egenskapen till DateTimeKind.Utc.

Parametern format innehåller ett mönster som motsvarar det förväntade formatet för parametern s . Mönstret i parametern format består av en eller flera anpassade formatspecificerare från tabellen Anpassade datum- och tidsformatsträngar , eller en enda standardformatsspecificerare, som identifierar ett fördefinierat mönster, från tabellen Standard datum- och tidsformatsträngar .

Om du inte använder datum- eller tidsavgränsare i ett anpassat formatmönster använder du den invarianta kulturen för parametern provider och den bredaste formen för varje anpassad formatspecificerare. Om du till exempel vill ange timmar i mönstret anger du det bredare formuläret , "HH", i stället för det smalare formuläret , "H".

Note

I stället för att kräva att detta s överensstämmer med ett enda format för att parsningsåtgärden ska lyckas kan du anropa DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) metoden och ange flera tillåtna format. Detta gör parsningsåtgärden mer sannolikt att lyckas.

De specifika datum- och tidssymboler och strängar (till exempel namnen på veckodagarna på ett visst språk) som används i s definieras av parametern provider , liksom det exakta formatet för s om format är en standardformatsspecificeraresträng. Parametern provider kan vara något av följande:

Om provider är nullanvänds det CultureInfo objekt som motsvarar den aktuella kulturen.

Parametern styles innehåller en eller flera medlemmar i DateTimeStyles uppräkningen som avgör om och var tomt utrymme som inte definieras av format kan visas i s och som styr det exakta beteendet för parsningsåtgärden. I följande tabell beskrivs hur varje medlem i DateTimeStyles uppräkningen påverkar metodens TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) funktion.

DateTimeStyles-medlem Description
AdjustToUniversal Parsar s och konverterar den vid behov till UTC. Om s innehåller en tidszonsförskjutning, eller om s den inte innehåller någon tidszonsinformation men styles innehåller DateTimeStyles.AssumeLocal flaggan, parsar metoden strängen, anropar ToUniversalTime för att konvertera det returnerade DateTime värdet till UTC och anger Kind egenskapen till DateTimeKind.Utc. Om s anger att den representerar UTC, eller om s den inte innehåller tidszonsinformation men styles innehåller DateTimeStyles.AssumeUniversal flaggan, parsar metoden strängen, utför ingen tidszonskonvertering på det returnerade DateTime värdet och anger Kind egenskapen till DateTimeKind.Utc. I alla andra fall har flaggan ingen effekt.
AllowInnerWhite Anger att tomt utrymme som inte definieras av format kan visas mellan ett enskilt datum- eller tidselement.
AllowLeadingWhite Anger att tomt utrymme som inte definieras av format kan visas i början av s.
AllowTrailingWhite Anger att tomt utrymme som inte definieras av format kan visas i slutet av s.
AllowWhiteSpaces Anger som kan innehålla inledande, inre och avslutande blanksteg som s inte definieras av format.
AssumeLocal Anger att om s det inte finns någon tidszonsinformation antas det representera en lokal tid. Om inte DateTimeStyles.AdjustToUniversal flaggan finns, sätts Kind-egenskapen för det returnerade DateTime-värdet till DateTimeKind.Local.
AssumeUniversal Anger att om s det inte finns någon tidszonsinformation antas det representera UTC. DateTimeStyles.AdjustToUniversal Om inte flaggan finns konverterar metoden det returnerade DateTime värdet från UTC till lokal tid och anger dess Kind egenskap till DateTimeKind.Local.
NoCurrentDateDefault Om s innehåller tid utan datuminformation anges returvärdets datum till DateTime.MinValue.Date.
None Parametern s parsas med standardvärden. Inget tomt utrymme förutom det som finns i format tillåts. Om s det saknas en datumkomponent anges datumet för det returnerade DateTime värdet till 1/1/0001. Om s innehåller ingen tidszonsinformation Kind är egenskapen för det returnerade DateTime objektet inställd på DateTimeKind.Unspecified. Om tidszonsinformation finns i skonverteras tiden till lokal tid och Kind egenskapen för det returnerade DateTime objektet är inställd på DateTimeKind.Local.
RoundtripKind För strängar som innehåller tidszonsinformation försöker du förhindra konverteringen till ett DateTime värde med egenskapen Kind inställd på DateTimeKind.Local. Den här flaggan förhindrar främst konvertering av UTC-tider till lokala tider.

Anteckningar till anropare

I .NET Framework 4 returnerar metoden TryParseExactfalse om strängen som ska parsas innehåller en timkomponent och en AM/PM-designator som inte är överens. I .NET Framework 3.5 och tidigare versioner ignoreras AM/PM-designatorn.

Se även

Gäller för

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

Konverterar den angivna strängrepresentationen av ett datum och en tid till dess DateTime motsvarighet med hjälp av den angivna matrisen med format, kulturspecifik formatinformation och formatmall. Formatet för strängrepresentationen måste matcha minst ett av de angivna formaten exakt. Metoden returnerar ett värde som anger om konverteringen lyckades.

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

Parametrar

s
String

En sträng som innehåller ett datum och en tid som ska konverteras.

formats
String[]

En matris med tillåtna format för s.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formatinformation om s.

style
DateTimeStyles

En bitvis kombination av uppräkningsvärden som anger det tillåtna formatet för s. Ett typiskt värde att ange är None.

result
DateTime

När den här metoden returneras innehåller värdet DateTime som motsvarar datum och tid i s, om konverteringen lyckades eller DateTime.MinValue om konverteringen misslyckades. Konverteringen misslyckas om s eller formats är null, s eller ett element i formats är en tom sträng, eller om s formatet inte är exakt som anges av minst ett av formatmönstren i formats. Den här parametern skickas oinitierad.

Returer

trueom parametern s har konverterats, annars . false

Undantag

Längden på ett element i formats är 1, och det är inte ett av formatspecificerarens tecken som definierats för DateTimeFormatInfo.

style är inte ett giltigt DateTimeStyles värde.

-eller-

style innehåller en ogiltig kombination av DateTimeStyles värden (till exempel både AssumeLocal och AssumeUniversal).

Exempel

I följande exempel används DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) metoden för att säkerställa att en sträng i ett antal möjliga format kan parsas .

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.

Kommentarer

Metoden DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) parsar strängrepresentationen av ett datum som matchar något av de mönster som tilldelats parametern formats . Det är som DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) metoden, förutom att TryParseExact metoden inte utlöser ett undantag om konverteringen misslyckas.

Parametern s innehåller datum och tid som ska parsas. Om parametern s endast innehåller en tid och inget datum används det aktuella datumet såvida inte parametern style innehåller DateTimeStyles.NoCurrentDateDefault flaggan, i vilket fall standarddatumet (DateTime.Date.MinValue) används. Om parametern s endast innehåller ett datum och ingen tid används midnatt (00:00:00). Parametern style avgör också om parametern s kan innehålla inledande, inre eller avslutande blankstegstecken förutom de som tillåts av en av formatsträngarna i formats.

Om s innehåller ingen tidszonsinformation är DateTimeKind.Unspecifiedegenskapen för Kind det returnerade DateTime objektet . Det här beteendet kan ändras med hjälp DateTimeStyles.AssumeLocal av flaggan, som returnerar ett DateTime värde vars Kind egenskap är DateTimeKind.Local, eller med hjälp av flaggorna DateTimeStyles.AssumeUniversal och DateTimeStyles.AdjustToUniversal som returnerar ett DateTime värde vars Kind egenskap är DateTimeKind.Utc. Om s innehåller tidszonsinformation konverteras tiden till lokal tid, om det behövs, och Kind egenskapen för det returnerade DateTime objektet är inställd på DateTimeKind.Local. Det här beteendet kan ändras med hjälp DateTimeStyles.RoundtripKind av flaggan för att inte konvertera Coordinated Universal Time (UTC) till en lokal tid och ange Kind egenskapen till DateTimeKind.Utc.

Parametern formats innehåller en matris med mönster, varav s en måste matcha exakt om parsningsåtgärden ska lyckas. Mönstren i parametern formats består av en eller flera anpassade formatspecificerare från tabellen Anpassade datum- och tidsformatsträngar , eller en enda standardformatsspecificerare, som identifierar ett fördefinierat mönster, från tabellen Standard datum- och tidsformatsträngar .

Om du inte använder datum- eller tidsavgränsare i ett anpassat formatmönster använder du den invarianta kulturen för parametern provider och den bredaste formen för varje anpassad formatspecificerare. Om du till exempel vill ange timmar i mönstret anger du det bredare formuläret , "HH", i stället för det smalare formuläret , "H".

De specifika datum- och tidssymboler och strängar (till exempel namnen på veckodagarna på ett visst språk) som används i s definieras av parametern provider , liksom det exakta formatet för s om format är en standardformatsspecificeraresträng. Parametern provider kan vara något av följande:

Om provider är nullanvänds det CultureInfo objekt som motsvarar den aktuella kulturen.

Parametern styles innehåller en eller flera medlemmar i DateTimeStyles uppräkningen som avgör om och var tomt utrymme som inte definieras av format kan visas i s och som styr det exakta beteendet för parsningsåtgärden. I följande tabell beskrivs hur varje medlem i DateTimeStyles uppräkningen påverkar metodens TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) funktion.

DateTimeStyles-medlem Description
AdjustToUniversal Parsar s och konverterar den vid behov till UTC. Om s innehåller en tidszonsförskjutning, eller om s den inte innehåller någon tidszonsinformation men styles innehåller DateTimeStyles.AssumeLocal flaggan, parsar metoden strängen, anropar ToUniversalTime för att konvertera det returnerade DateTime värdet till UTC och anger Kind egenskapen till DateTimeKind.Utc. Om s anger att den representerar UTC, eller om s den inte innehåller tidszonsinformation men styles innehåller DateTimeStyles.AssumeUniversal flaggan, parsar metoden strängen, utför ingen tidszonskonvertering på det returnerade DateTime värdet och anger Kind egenskapen till DateTimeKind.Utc. I alla andra fall har flaggan ingen effekt.
AllowInnerWhite Anger att tomt utrymme som inte definieras av format kan visas mellan ett enskilt datum- eller tidselement.
AllowLeadingWhite Anger att tomt utrymme som inte definieras av format kan visas i början av s.
AllowTrailingWhite Anger att tomt utrymme som inte definieras av format kan visas i slutet av s.
AllowWhiteSpaces Anger som kan innehålla inledande, inre och avslutande blanksteg som s inte definieras av format.
AssumeLocal Anger att om s det inte finns någon tidszonsinformation antas det representera en lokal tid. Om inte DateTimeStyles.AdjustToUniversal flaggan finns, sätts Kind-egenskapen för det returnerade DateTime-värdet till DateTimeKind.Local.
AssumeUniversal Anger att om s det inte finns någon tidszonsinformation antas det representera UTC. DateTimeStyles.AdjustToUniversal Om inte flaggan finns konverterar metoden det returnerade DateTime värdet från UTC till lokal tid och anger dess Kind egenskap till DateTimeKind.Local.
NoCurrentDateDefault Om s innehåller tid utan datuminformation anges returvärdets datum till DateTime.MinValue.Date.
None Parametern s parsas med standardvärden. Inget tomt utrymme förutom det som finns i format tillåts. Om s det saknas en datumkomponent anges datumet för det returnerade DateTime värdet till 1/1/0001. Om s innehåller ingen tidszonsinformation Kind är egenskapen för det returnerade DateTime objektet inställd på DateTimeKind.Unspecified. Om tidszonsinformation finns i skonverteras tiden till lokal tid och Kind egenskapen för det returnerade DateTime objektet är inställd på DateTimeKind.Local.
RoundtripKind För strängar som innehåller tidszonsinformation försöker du förhindra konverteringen till ett DateTime värde med egenskapen Kind inställd på DateTimeKind.Local. Den här flaggan förhindrar främst konvertering av UTC-tider till lokala tider.

Anteckningar till anropare

I .NET Framework 4 returnerar metoden TryParseExactfalse om strängen som ska parsas innehåller en timkomponent och en AM/PM-designator som inte är överens. I .NET Framework 3.5 och tidigare versioner ignoreras AM/PM-designatorn.

Se även

Gäller för