DateTimeOffset.TryParseExact Metódus

Definíció

Egy dátum és idő megadott sztring-ábrázolását konvertálja annak megfelelőjeként DateTimeOffset . A sztring-ábrázolás formátumának pontosan meg kell egyeznie egy megadott formátummal.

Túlterhelések

Name Description
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Egy dátum és idő megadott sztring-ábrázolását a megadott formátumok, kultúraspecifikus formátumadatok és stílus használatával konvertálja DateTimeOffset annak megfelelővé. A sztring-ábrázolás formátumának pontosan meg kell egyeznie a megadott formátumok egyikével.

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

A megadott formátum, kultúraspecifikus formátumadatok és stílus használatával átalakítja egy karakteren belüli DateTimeOffset dátum és idő ábrázolását annak megfelelőjeként. A dátum- és időábrázolás formátumának pontosan meg kell egyeznie a megadott formátummal.

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

A megadott formátumok, kultúraspecifikus formátumadatok és stílus használatával átalakítja egy karakteren belüli DateTimeOffset dátum és idő ábrázolását annak megfelelőjeként. A dátum- és időábrázolás formátumának pontosan meg kell egyeznie a megadott formátumok egyikével.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Egy dátum és idő megadott sztringképét a megadott formátum, kultúraspecifikus formátumadatok és stílus használatával konvertálja DateTimeOffset annak megfelelővé. A sztring-ábrázolás formátumának pontosan meg kell egyeznie a megadott formátummal.

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

Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs

Egy dátum és idő megadott sztring-ábrázolását a megadott formátumok, kultúraspecifikus formátumadatok és stílus használatával konvertálja DateTimeOffset annak megfelelővé. A sztring-ábrázolás formátumának pontosan meg kell egyeznie a megadott formátumok egyikével.

public:
 static bool TryParseExact(System::String ^ input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact(string input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact(string? input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Paraméterek

input
String

Egy sztring, amely dátumot és időt tartalmaz az átalakításhoz.

formats
String[]

A várt formátumokat inputmeghatározó tömb.

formatProvider
IFormatProvider

Egy objektum, amely a kultúraspecifikus formázási inputinformációkat tartalmazza.

styles
DateTimeStyles

Az enumerálási értékek bitenkénti kombinációja, amely a bemenet megengedett formátumát jelzi. Egy jellemzően megadható érték a következő None: .

result
DateTimeOffset

A metódus visszatérésekor a DateTimeOffset dátumnak és az időnek inputmegfelelő értéket tartalmazza, ha az átalakítás sikeres volt, vagy a DateTimeOffset.MinValue értéket, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha az input adott dátum és idő érvényes sztring-ábrázolását nem tartalmazza, vagy nem tartalmazza a dátumot és az időt a megadott formátumban formats, vagy ha formats igen null. Ez a paraméter nem inicializálva lesz átadva.

Válaszok

trueha a input paraméter konvertálása sikeresen megtörtént; ellenkező esetben. false

Kivételek

styles nem definiált DateTimeStyles értéket tartalmaz.

-vagy-

NoCurrentDateDefault nem támogatott.

-vagy-

styles kölcsönösen kizáró DateTimeStyles értékeket tartalmaz.

Példák

Az alábbi példa több bemeneti formátumot határoz meg egy dátum- és idő- és eltolásérték sztring-ábrázolásához, majd átadja a felhasználó által megadott sztringet a TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) metódusnak.

TextReader conIn = Console.In;
TextWriter conOut = Console.Out;
int tries = 0;
string input = String.Empty;

string[] formats = new string[] {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz",
                                 "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz",
                                 "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz",
                                 "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz",
                                 "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz",
                                 "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz",
                                 "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz",
                                 "M/d/yy H:m zzz", "MM/d/yy H:m zzz",
                                 "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz",
                                 "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz",
                                 "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz",
                                 "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz",
                                 "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz",
                                 "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz",
                                 "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz",
                                 "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"};
IFormatProvider provider = CultureInfo.InvariantCulture.DateTimeFormat;
DateTimeOffset result;

do {
   conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),");
   conOut.Write("Then press Enter: ");
   input = conIn.ReadLine();
   conOut.WriteLine();
   if (DateTimeOffset.TryParseExact(input, formats, provider,
                                   DateTimeStyles.AllowWhiteSpaces,
                                   out result))
   {
      break;
   }
   else
   {
      Console.WriteLine("Unable to parse {0}.", input);
      tries++;
   }
} while (tries < 3);
if (tries >= 3)
   Console.WriteLine("Exiting application without parsing {0}", input);
else
   Console.WriteLine("{0} was converted to {1}", input, result.ToString());
// Some successful sample interactions with the user might appear as follows:
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/08/2007 6:54 -6:00
//
//    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/8/2007 06:54 -06:00
//
//    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/5/07 6:54 -6:00
//
//    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
let mutable result = None    
let mutable tries = 0
let mutable input = ""

let formats = 
    [| "M/dd/yyyy HH:m zzz"; "MM/dd/yyyy HH:m zzz"
       "M/d/yyyy HH:m zzz"; "MM/d/yyyy HH:m zzz"
       "M/dd/yy HH:m zzz"; "MM/dd/yy HH:m zzz"
       "M/d/yy HH:m zzz"; "MM/d/yy HH:m zzz"
       "M/dd/yyyy H:m zzz"; "MM/dd/yyyy H:m zzz"
       "M/d/yyyy H:m zzz"; "MM/d/yyyy H:m zzz"
       "M/dd/yy H:m zzz"; "MM/dd/yy H:m zzz"
       "M/d/yy H:m zzz"; "MM/d/yy H:m zzz"
       "M/dd/yyyy HH:mm zzz"; "MM/dd/yyyy HH:mm zzz"
       "M/d/yyyy HH:mm zzz"; "MM/d/yyyy HH:mm zzz"
       "M/dd/yy HH:mm zzz"; "MM/dd/yy HH:mm zzz"
       "M/d/yy HH:mm zzz"; "MM/d/yy HH:mm zzz"
       "M/dd/yyyy H:mm zzz"; "MM/dd/yyyy H:mm zzz"
       "M/d/yyyy H:mm zzz"; "MM/d/yyyy H:mm zzz"
       "M/dd/yy H:mm zzz"; "MM/dd/yy H:mm zzz"
       "M/d/yy H:mm zzz"; "MM/d/yy H:mm zzz" |]
let provider = CultureInfo.InvariantCulture.DateTimeFormat

while tries < 3 && result.IsNone do
    printfn "Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),"
    printf "Then press Enter: "
    input <- stdin.ReadLine()
    printfn ""
    match DateTimeOffset.TryParseExact(input, formats, provider, DateTimeStyles.AllowWhiteSpaces) with
    | true, dto ->
        result <- Some dto
    | _ ->
        printfn $"Unable to parse {input}."
    tries <- tries + 1

match result with
| Some result ->
    printfn $"{input} was converted to {result}"
| None ->
    printfn $"Exiting application without parsing {input}"

// Some successful sample interactions with the user might appear as follows:
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/08/2007 6:54 -6:00
//
//    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/8/2007 06:54 -06:00
//
//    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/5/07 6:54 -6:00
//
//    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
 Dim conIn As TextReader = Console.In
 Dim conOut As TextWriter = Console.Out
 Dim tries As Integer = 0
 Dim input As String = String.Empty
 Dim formats() As String = {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz", _
                            "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz", _
                            "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz", _
                            "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz", _                                 
                            "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz", _
                            "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz", _
                            "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz", _
                            "M/d/yy H:m zzz", "MM/d/yy H:m zzz", _                               
                            "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz", _
                            "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz", _
                            "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz", _
                            "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz", _                                 
                            "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz", _
                            "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz", _
                            "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz", _
                            "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"}   
 Dim provider As IFormatProvider = CultureInfo.InvariantCulture.DateTimeFormat
 Dim result As DateTimeOffset

 Do 
    conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),")
    conOut.Write("Then press Enter: ")
    input = conIn.ReadLine()
    conOut.WriteLine() 
    If DateTimeOffset.TryParseExact(input, formats, provider, _
                                    DateTimeStyles.AllowWhiteSpaces, _
                                    result) Then
       Exit Do
    Else
       Console.WriteLine("Unable to parse {0}.", input)      
       tries += 1
    End If
 Loop While tries < 3
 If tries >= 3 Then
    Console.WriteLine("Exiting application without parsing {0}", input)
 Else
    Console.WriteLine("{0} was converted to {1}", input, result.ToString())                                                     
 End If 
 ' Some successful sample interactions with the user might appear as follows:
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/08/2007 6:54 -6:00
 '    
 '    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00         
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/8/2007 06:54 -06:00
 '    
 '    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/5/07 6:54 -6:00
 '    
 '    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00

Megjegyzések

A TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) metódus elemzi a tömbhöz rendelt formats minták bármelyikének megfelelő dátum sztring-ábrázolását. Ha a sztring input nem egyezik a paraméterek által styles definiált variációkkal, az elemzési művelet meghiúsul, és a metódus visszatér false. input A formátumjelölőket tartalmazó több sztring összehasonlításán kívül ez a túlterhelés ugyanúgy viselkedik, mint a DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) metódus.

A formats paraméter egy sztringtömb, amelynek elemei egyetlen szabványos formátumkijelölőt vagy egy vagy több egyéni formátumjelölőt tartalmaznak, amelyek meghatározzák a lehetséges mintát input. Az érvényes formázási kódokról további információt a Standard dátum- és időformátum sztringjei , valamint az egyéni dátum- és időformátum-sztringek című témakörben talál. Ha a egyeztetett elem tartalmazza formats a z, zzvagy zzz egyéni formátumjelölőket, amelyek azt jelzik, hogy eltolásnak kell lennie, inputaz eltolásnak negatív vagy pozitív előjelet kell tartalmaznia. Ha a jel hiányzik, az elemzési művelet meghiúsul, és a metódus visszatér false.

Important

Ha ennek a túlterhelésnek a formats paraméterét több formátum megadására használja, azzal csökkentheti a sok felhasználó által a dátumok és időpontok megadásakor tapasztalt frusztrációt. A több bemeneti minta definiálásának lehetősége lehetővé teszi, hogy az alkalmazás olyan dátum- és időábrázolásokat kezeljen, amelyek hónapok, napok, órák, percek és másodpercek kezdő nulláit tartalmazhatják vagy nem. A példa ezt szemlélteti.

Ha a megfeleltetett elemhez formats dátumot, de nem időpontot kell input tartalmaznia, az eredményként DateTimeOffset kapott objektumhoz éjféli időpont (0:00:00) lesz hozzárendelve. Ha a megfeleltetett elem formats megköveteli, hogy a bemenet egy időpontot tartalmazzon, de dátumot nem, akkor az eredményként kapott DateTimeOffset objektum a helyi rendszeren az aktuális dátumot rendeli hozzá. Ha a megfeleltetett elem formats nem követeli meg, hogy input eltolást tartalmazzon, az eredményként kapott DateTimeOffset objektum eltolása a styles paraméter értékétől függ. Ha styles tartalmazza AssumeLocal, a helyi időzóna eltolása hozzá lesz rendelve az DateTimeOffset objektumhoz. Ha styles tartalmazza AssumeUniversal, az egyezményes világidő (UTC) eltolása vagy +00:00 az objektumhoz DateTimeOffset van rendelve. Ha egyik érték sincs megadva, a rendszer a helyi időzóna eltolását használja.

A megadott dátum- és időszimbólumokat és sztringeket input a formatProvider paraméter határozza meg. Ugyanez igaz a pontos mintára input , ha az egyező elem formats egy szabványos formátumkijelölő sztring. A formatProvider paraméter a következők egyike lehet:

Ha formatprovider igen null, akkor a rendszer az CultureInfo aktuális kultúrának megfelelő objektumot használja.

A styles paraméter meghatározza, hogy a bemeneti sztringben engedélyezett-e a szabad terület, jelzi, hogy az explicit eltolási összetevő nélküli sztringek hogyan vannak elemezve, és támogatja az UTC-konverziót az elemzési művelet részeként. Az enumerálás minden tagja DateTimeStyles támogatott, kivéve NoCurrentDateDefault. Az alábbi táblázat az egyes támogatott tagok hatását sorolja fel.

DateTimeStyles tag Magatartás
AdjustToUniversal input Elemzi és szükség esetén UTC-vé alakítja át. Ez egyenértékű egy sztring elemzésével, majd a DateTimeOffset.ToUniversalTime visszaadott DateTimeOffset objektum metódusának meghívásával.
AssumeLocal Ha a megfeleltetett elem formats nem követeli meg, hogy input eltolási értéket tartalmazzon, a visszaadott DateTimeOffset objektum a helyi időzóna eltolását kapja. Ez az alapértelmezett érték.
AssumeUniversal Ha a megfeleltetett elem formats nem követeli meg, hogy input eltolásértéket tartalmazzon, a visszaadott DateTimeOffset objektum utc-eltolást (+00:00) kap.
AllowInnerWhite Lehetővé teszi input , hogy az elemek által nem megadott belső térközt is belefoglalja a fájlba formats. A dátum- és időösszetevők és az egyes összetevők között (az eltolás kivételével) további üres terület jelenhet meg, és a sztring elemzésekor figyelmen kívül hagyja.
AllowLeadingWhite Lehetővé teszi input a bevezető szóközök hozzáadását, amelyeket az elemek nem határoznak meg a fájlban formats. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowTrailingWhite Lehetővé teszi input a záró szóközök hozzáadását, amelyeket az elemek nem határoznak meg a fájlban formats. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowWhiteSpaces Lehetővé teszi input a bevezető, záró és belső szóközök hozzáadását, amelyeket az elemek nem határoznak meg a fájlban formats. A sztring elemzésekor a rendszer figyelmen kívül hagyja az összes olyan szóköz karaktert, amely nincs megadva a megfeleltetett elemben formats .
None Azt jelzi, hogy a további szabad terület nem engedélyezett.input A sikeres egyeztetéshez a szóköznek pontosan az adott elemben formats megadott módon kell megjelennie. Ez az alapértelmezett viselkedés.
RoundtripKind Nincs hatása, mert a DateTimeOffset struktúra nem tartalmaz tulajdonságot Kind .

Megjegyzések a hívókhoz

A .NET Framework 4-ben a TryParseExactfalse ad vissza, ha az elemezni kívánt sztring tartalmaz egy óra összetevőt és egy am/PM-tervezőt, amely nincs egyetértésben. A .NET Framework 3.5-ös és korábbi verzióiban a rendszer figyelmen kívül hagyja az AM/PM-tervezőt.

A következőre érvényes:

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

Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs

A megadott formátum, kultúraspecifikus formátumadatok és stílus használatával átalakítja egy karakteren belüli DateTimeOffset dátum és idő ábrázolását annak megfelelőjeként. A dátum- és időábrázolás formátumának pontosan meg kell egyeznie a megadott formátummal.

public:
 static bool TryParseExact(ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact(ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact(ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Paraméterek

input
ReadOnlySpan<Char>

Az átalakítandó dátumot és időt ábrázoló karaktereket tartalmazó span.

format
ReadOnlySpan<Char>

Egy formátumkijelölő, amely meghatározza a szükséges formátumot input.

formatProvider
IFormatProvider

Egy objektum, amely a kultúraspecifikus formázási inputinformációkat tartalmazza.

styles
DateTimeStyles

Az enumerálási értékek bitenkénti kombinációja, amely a megengedett formátumot inputjelzi. Egy jellemzően megadható érték a következő None: .

result
DateTimeOffset

A metódus visszatérésekor a DateTimeOffset dátumnak és az időnek inputmegfelelő értéket tartalmazza, ha az átalakítás sikeres volt, vagy a DateTimeOffset.MinValue értéket, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a

Válaszok

trueha a input paraméter konvertálása sikeresen megtörtént; ellenkező esetben. false

Kivételek

styles nem definiált DateTimeStyles értéket tartalmaz. -vagy- NoCurrentDateDefault nem támogatott. -vagy - styles magában foglalja a kölcsönösen kizáró DateTimeStyles értékeket.

Megjegyzések

Ez a túlterhelés a metódushoz hasonló DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) , azzal a kivétellel, hogy ez a metódus nem okoz kivételt, ha az átalakítás sikertelen. Egy dátum és idő ábrázolását elemzi, amely pontosan egyezik a format paraméter által megadott mintával. Ha input nem egyezik meg ezzel a mintával, a paraméter által styles definiált üres terület néhány lehetséges variációjával az elemzési művelet meghiúsul, és a metódus visszatér false.

A format paraméter egy karaktertartomány, amely egyetlen szabványos formátumkijelölőt vagy egy vagy több egyéni formátumkijelölőt tartalmaz, amelyek meghatározzák a szükséges mintát input. Az érvényes formázási kódokról további információt a Standard dátum- és időformátum sztringjei , valamint az egyéni dátum- és időformátum-sztringek című témakörben talál. Ha format az zeltolást jelző , zzvagy zzz egyéni formátumjelölőket is tartalmaz, akkor az eltolásnak inputnegatív vagy pozitív előjelet kell tartalmaznia. Ha a jel hiányzik, az elemzési művelet meghiúsul, és a metódus visszatér false.

Ha format dátumot input , de nem időpontot kell tartalmaznia, az eredményként kapott DateTimeOffset objektumhoz éjféli időpont lesz hozzárendelve (0:00:00). Ha format ehhez input idő szükséges, de dátumot nem, akkor az eredményként kapott DateTimeOffset objektum a helyi rendszeren az aktuális dátumot rendeli hozzá. Ha format nincs szükség eltolásra input , az eredményként kapott DateTimeOffset objektum eltolása a styles paraméter értékétől függ. Ha styles tartalmazza AssumeLocal, a helyi időzóna eltolása hozzá lesz rendelve az DateTimeOffset objektumhoz. Ha styles tartalmazza AssumeUniversal, az egyezményes világidő (UTC) eltolása vagy +00:00 az objektumhoz DateTimeOffset van rendelve. Ha egyik érték sincs megadva, a rendszer a helyi időzóna eltolását használja.

A megadott dátum- és időszimbólumokat és sztringeket input a formatProvider paraméter határozza meg. Ugyanez igaz a szabványos formátumkijelölő sztring pontos mintájára inputformat is. A formatProvider paraméter a következők egyike lehet:

Ha formatprovider igen null, akkor a rendszer az CultureInfo aktuális kultúrának megfelelő objektumot használja.

A styles paraméter meghatározza, hogy engedélyezett-e szabad terület a bemeneti sztringben, jelzi, hogy az explicit eltolási összetevő nélküli sztringek hogyan lesznek elemezve, és támogatja az UTC-konverziót az elemzési művelet részeként. Az enumerálás minden tagja DateTimeStyles támogatott, kivéve NoCurrentDateDefault. Az alábbi táblázat az egyes támogatott tagok hatását sorolja fel.

DateTimeStyles tag Magatartás
AdjustToUniversal input Elemzi és szükség esetén UTC-vé alakítja át. Ez egyenértékű a dátum- és időábrázolás elemzésével, majd a DateTimeOffset.ToUniversalTime visszaadott DateTimeOffset objektum metódusának meghívásával.
AssumeLocal Ha format nincs szükség input eltolásértékre, a visszaadott DateTimeOffset objektum a helyi időzóna eltolását kapja. Ez az alapértelmezett viselkedés.
AssumeUniversal Ha format nincs szükség eltolásértékre input , a visszaadott DateTimeOffset objektum utc-eltolást (+00:00) kap.
AllowInnerWhite Lehetővé teszi input a formátum által nem megadott belső térköz hozzáadását. A dátum- és időösszetevők és az egyes összetevők között – az eltolástól eltérően – további üres terület jelenhet meg, és a sztring elemzésekor figyelmen kívül hagyja.
AllowLeadingWhite Lehetővé teszi input a nem megadott kezdő szóközök hozzáadását format. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowTrailingWhite Lehetővé teszi input a nem megadott záró szóközök hozzáadását format. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowWhiteSpaces Lehetővé teszi input a bevezető, záró és belső szóközök hozzáadását format. A sztring elemzésekor a rendszer figyelmen kívül hagyja az összes nem megadott format szóköz karaktert.
None Azt jelzi, hogy a további szabad terület nem engedélyezett.input A szóköznek pontosan a megadott módon kell megjelennie.format Ez az alapértelmezett viselkedés.
RoundtripKind Nincs hatása, mert a DateTimeOffset szerkezet nem tartalmaz tulajdonságot Kind .

A következőre érvényes:

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

Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs

A megadott formátumok, kultúraspecifikus formátumadatok és stílus használatával átalakítja egy karakteren belüli DateTimeOffset dátum és idő ábrázolását annak megfelelőjeként. A dátum- és időábrázolás formátumának pontosan meg kell egyeznie a megadott formátumok egyikével.

public:
 static bool TryParseExact(ReadOnlySpan<char> input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact(ReadOnlySpan<char> input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact(ReadOnlySpan<char> input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Paraméterek

input
ReadOnlySpan<Char>

Az átalakítandó dátumot és időt ábrázoló karaktereket tartalmazó span.

formats
String[]

Standard vagy egyéni formázási sztringek tömbje input, amelyek az elfogadható formátumokat határozzák meg.

formatProvider
IFormatProvider

Egy objektum, amely a kultúraspecifikus formázási inputinformációkat tartalmazza.

styles
DateTimeStyles

Az enumerálási értékek bitenkénti kombinációja, amely a megengedett formátumot inputjelzi. Egy jellemzően megadható érték a következő None: .

result
DateTimeOffset

A metódus visszatérésekor a DateTimeOffset dátumnak és az időnek inputmegfelelő értéket tartalmazza, ha az átalakítás sikeres volt, vagy a DateTimeOffset.MinValue értéket, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a

Válaszok

trueha a input paraméter konvertálása sikeresen megtörtént; ellenkező esetben. false

Kivételek

styles nem definiált DateTimeStyles értéket tartalmaz. -vagy- NoCurrentDateDefault nem támogatott. -vagy - styles magában foglalja a kölcsönösen kizáró DateTimeStyles értékeket.

Megjegyzések

Ez a metódus egy olyan dátum sztringképét elemzi, amely megfelel a tömbhöz formats rendelt minták bármelyikének. Ha input ezek közül a minták közül egyik sem felel meg a styles paraméter által definiált változatoknak, az elemzési művelet meghiúsul, és a metódus visszatér false. input A formátumjelölőket tartalmazó több sztring összehasonlításán kívül ez a túlterhelés ugyanúgy viselkedik, mint a DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) metódus.

A formats paraméter egy sztringtömb, amelynek elemei egyetlen szabványos formátumkijelölőt vagy egy vagy több egyéni formátumjelölőt tartalmaznak, amelyek meghatározzák a lehetséges mintát input. Az érvényes formázási kódokról további információt a Standard dátum- és időformátum sztringjei , valamint az egyéni dátum- és időformátum-sztringek című témakörben talál. Ha a egyeztetett elem tartalmazza formats a z, zzvagy zzz egyéni formátumjelölőket, amelyek azt jelzik, hogy eltolásnak kell lennie, inputaz eltolásnak negatív vagy pozitív előjelet kell tartalmaznia. Ha a jel hiányzik, az elemzési művelet meghiúsul, és a metódus visszatér false.

Important

Ha ennek a túlterhelésnek a formats paraméterét több formátum megadására használja, azzal csökkentheti a sok felhasználó által a dátumok és időpontok megadásakor tapasztalt frusztrációt. A több bemeneti minta definiálásának lehetősége lehetővé teszi, hogy az alkalmazás olyan dátum- és időábrázolásokat kezeljen, amelyek hónapok, napok, órák, percek és másodpercek kezdő nulláit tartalmazhatják vagy nem. A példa ezt szemlélteti.

Ha a megfeleltetett elemhez formats dátumot, de nem időpontot kell input tartalmaznia, az eredményként DateTimeOffset kapott objektumhoz éjféli időpont (0:00:00) lesz hozzárendelve. Ha a megfeleltetett elem formats megköveteli, hogy a bemenet egy időpontot tartalmazzon, de dátumot nem, akkor az eredményként kapott DateTimeOffset objektum a helyi rendszeren az aktuális dátumot rendeli hozzá. Ha a megfeleltetett elem formats nem követeli meg, hogy input eltolást tartalmazzon, az eredményként kapott DateTimeOffset objektum eltolása a styles paraméter értékétől függ. Ha styles tartalmazza DateTimeStyles.AssumeLocal, a helyi időzóna eltolása hozzá lesz rendelve az DateTimeOffset objektumhoz. Ha styles tartalmazza DateTimeStyles.AssumeUniversal, az egyezményes világidő (UTC) eltolása vagy +00:00 az objektumhoz DateTimeOffset van rendelve. Ha egyik érték sincs megadva, a rendszer a helyi időzóna eltolását használja.

A megadott input dátum- és időszimbólumokat a formatProvider paraméter határozza meg. Ugyanez igaz a pontos mintára input , ha az egyező elem formats egy szabványos formátumkijelölő sztring. A formatProvider paraméter a következők egyike lehet:

Ha formatprovider igen null, akkor a rendszer az CultureInfo aktuális kultúrának megfelelő objektumot használja.

A styles paraméter meghatározza, hogy a bemeneti sztringben engedélyezett-e a szabad terület, jelzi, hogy az explicit eltolási összetevő nélküli sztringek hogyan vannak elemezve, és támogatja az UTC-konverziót az elemzési művelet részeként. Az enumerálás minden tagja DateTimeStyles támogatott, kivéve NoCurrentDateDefault. Az alábbi táblázat az egyes támogatott tagok hatását sorolja fel.

DateTimeStyles tag Magatartás
AdjustToUniversal input Elemzi és szükség esetén UTC-vé alakítja át. Ez egyenértékű egy sztring elemzésével, majd a DateTimeOffset.ToUniversalTime visszaadott DateTimeOffset objektum metódusának meghívásával.
AssumeLocal Ha a megfeleltetett elem formats nem követeli meg, hogy input eltolási értéket tartalmazzon, a visszaadott DateTimeOffset objektum a helyi időzóna eltolását kapja. Ez az alapértelmezett érték.
AssumeUniversal Ha a megfeleltetett elem formats nem követeli meg, hogy input eltolásértéket tartalmazzon, a visszaadott DateTimeOffset objektum utc-eltolást (+00:00) kap.
AllowInnerWhite Lehetővé teszi input , hogy az elemek által nem megadott belső térközt is belefoglalja a fájlba formats. A dátum- és időösszetevők és az egyes összetevők között (az eltolás kivételével) további üres terület jelenhet meg, és a sztring elemzésekor figyelmen kívül hagyja.
AllowLeadingWhite Lehetővé teszi input a bevezető szóközök hozzáadását, amelyeket az elemek nem határoznak meg a fájlban formats. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowTrailingWhite Lehetővé teszi input a záró szóközök hozzáadását, amelyeket az elemek nem határoznak meg a fájlban formats. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowWhiteSpaces Lehetővé teszi input a bevezető, záró és belső szóközök hozzáadását, amelyeket az elemek nem határoznak meg a fájlban formats. A sztring elemzésekor a rendszer figyelmen kívül hagyja az összes olyan szóköz karaktert, amely nincs megadva a megfeleltetett elemben formats .
None Azt jelzi, hogy a további szabad terület nem engedélyezett.input A sikeres egyeztetéshez a szóköznek pontosan az adott elemben formats megadott módon kell megjelennie. Ez az alapértelmezett viselkedés.
RoundtripKind Nincs hatása, mert a DateTimeOffset struktúra nem tartalmaz tulajdonságot Kind .

A következőre érvényes:

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs
Forrás:
DateTimeOffset.cs

Egy dátum és idő megadott sztringképét a megadott formátum, kultúraspecifikus formátumadatok és stílus használatával konvertálja DateTimeOffset annak megfelelővé. A sztring-ábrázolás formátumának pontosan meg kell egyeznie a megadott formátummal.

public:
 static bool TryParseExact(System::String ^ input, System::String ^ format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact(string input, string format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact(string? input, string? format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, format As String, formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean

Paraméterek

input
String

Egy sztring, amely dátumot és időt tartalmaz az átalakításhoz.

format
String

Egy formátumkijelölő, amely meghatározza a szükséges formátumot input.

formatProvider
IFormatProvider

Egy objektum, amely a kultúraspecifikus formázási inputinformációkat tartalmazza.

styles
DateTimeStyles

Az enumerálási értékek bitenkénti kombinációja, amely a bemenet megengedett formátumát jelzi. Egy jellemzően megadható érték a következő None: .

result
DateTimeOffset

A metódus visszatérésekor a DateTimeOffset dátumnak és az időnek inputmegfelelő értéket tartalmazza, ha az átalakítás sikeres volt, vagy a DateTimeOffset.MinValue értéket, ha az átalakítás sikertelen volt. Az átalakítás meghiúsul, ha a input paraméter a nulldátum és az idő érvényes sztring-ábrázolását tartalmazza az format and provider. Ez a paraméter nem inicializálva lesz átadva.

Válaszok

trueha a input paraméter konvertálása sikeresen megtörtént; ellenkező esetben. false

Kivételek

styles nem definiált DateTimeStyles értéket tartalmaz.

-vagy-

NoCurrentDateDefault nem támogatott.

-vagy-

styles kölcsönösen kizáró DateTimeStyles értékeket tartalmaz.

Példák

Az alábbi példa a TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) metódust szabványos és egyéni formátumkijelölőkkel, az invariáns kultúrával és különböző DateTimeStyles értékekkel használja több dátum- és idősztring elemzéséhez.

string dateString, format;
DateTimeOffset result;
IFormatProvider provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AssumeUniversal,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
dateString = " 06/15/2008";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowTrailingWhite,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00";
format = "MM/dd/yyyy H:mm zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowWhiteSpaces,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00";
format = "MM/dd/yyyy H:mm:ss zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                DateTimeStyles.AllowWhiteSpaces |
                                DateTimeStyles.AdjustToUniversal,
                                out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);
// The example displays the following output:
//    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
let provider = CultureInfo.InvariantCulture

// Parse date-only value with invariant culture and assume time is UTC.
let dateString = "06/15/2008"
let format = "d"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AssumeUniversal) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
let dateString = " 06/15/2008"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowTrailingWhite) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// Parse date and time value, and allow all white space.
let dateString = " 06/15/   2008  15:15    -05:00"
let format = "MM/dd/yyyy H:mm zzz"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowWhiteSpaces) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// Parse date and time and convert to UTC.
let dateString = "  06/15/2008 15:15:30 -05:00"
let format = "MM/dd/yyyy H:mm:ss zzz"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowWhiteSpaces ||| DateTimeStyles.AdjustToUniversal) with
| true, result ->
    printfn $"'{dateString}' converts to {result}."
| _ ->
    printfn $"'{dateString}' is not in the correct format."

// The example displays the following output:
//    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
Dim dateString, format As String  
Dim result As DateTimeOffset
Dim provider As CultureInfo = CultureInfo.InvariantCulture

' Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008"
format = "d"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                   DateTimeStyles.AssumeUniversal, _
                                   result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date-only value with leading white space.
' Should return False because only trailing white space is  
' specified in method call.
dateString = " 06/15/2008"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowTrailingWhite, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00"
format = "MM/dd/yyyy H:mm zzz"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00"   
format = "MM/dd/yyyy H:mm:ss zzz"       
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces Or _
                                DateTimeStyles.AdjustToUniversal, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 
' The example displays the following output:
'    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
'    ' 06/15/2008' is not in the correct format.
'    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
'    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.

Az alábbi példa különböző DateTimeStyles értékeket használ az ISO 8601 szabványnak várhatóan megfelelő sztringek tömbjének elemzéséhez. Ahogy a példa kimenete is mutatja, a megfelelő formátumú sztringek nem elemeznek, ha:

  • fehér szóközt és egy megfelelő DateTimeStyles jelzőt tartalmaznak (például DateTimeStyles.AllowWhiteSpaces nem szerepel a metódushívásban).

  • olyan dátum- és időelemeket tartalmaznak, amelyek nem tartoznak a tartományba.

Az UTC-eltolást nem meghatározó sztringek esetében feltételezzük, hogy a helyi időzóna eltolása (ebben az esetben -07:00, amely a csendes-óceáni nyári időzóna eltolását tükrözi), kivéve, ha a DateTimeStyles.AssumeUniversal jelölő szerepel a metódushívásban. Ebben az esetben a rendszer azt feltételezi, hogy univerzális koordinált időnek minősülnek.

open System
open System.Globalization

let parseWithISO8601 dateStrings styles =
    printfn $"Parsing with {styles}:"
    for dateString in dateStrings do
        match DateTimeOffset.TryParseExact(dateString, "O", null, styles) with
        | true, date ->
            printfn $"""   {dateString,-35} --> {date.ToString "yyyy-MM-dd HH:mm:ss.FF zzz"}"""
        | _ ->
            printfn $"   Unable to convert '{dateString}'"

let dateStrings = 
    [ "2018-08-18T12:45:16.0000000Z"
      "2018/08/18T12:45:16.0000000Z"
      "2018-18-08T12:45:16.0000000Z"
      "2018-08-18T12:45:16.0000000"
      " 2018-08-18T12:45:16.0000000Z "
      "2018-08-18T12:45:16.0000000+02:00"
      "2018-08-18T12:45:16.0000000-07:00" ]

parseWithISO8601 dateStrings DateTimeStyles.None
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AllowWhiteSpaces
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AdjustToUniversal
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AssumeLocal
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AssumeUniversal

// The example displays the following output:
//      Parsing with None:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AllowWhiteSpaces:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AdjustToUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
//
//      -----
//
//      Parsing with AssumeLocal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AssumeUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "2018-08-18T12:45:16.0000000Z",
                               "2018/08/18T12:45:16.0000000Z",
                               "2018-18-08T12:45:16.0000000Z",
                               "2018-08-18T12:45:16.0000000",                               
                               " 2018-08-18T12:45:16.0000000Z ",
                               "2018-08-18T12:45:16.0000000+02:00",
                               "2018-08-18T12:45:16.0000000-07:00" }; 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal);   }

   private static void ParseWithISO8601(string[] dateStrings, DateTimeStyles styles)
   {   
      Console.WriteLine($"Parsing with {styles}:");
      DateTimeOffset date;
      foreach (var dateString in dateStrings)
      {
         if (DateTimeOffset.TryParseExact(dateString, "O", null, styles, out date))
         {
            Console.WriteLine($"   {dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
         }
         else
         {
            Console.WriteLine($"   Unable to convert '{dateString}'");
         }   
      } 
   }
}
// The example displays the following output:
//      Parsing with None:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AllowWhiteSpaces:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AdjustToUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
//
//      -----
//
//      Parsing with AssumeLocal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AssumeUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateStrings() = { "2018-08-18T12:45:16.0000000Z",
                            "2018/08/18T12:45:16.0000000Z",
                            "2018-18-08T12:45:16.0000000Z",
                            "2018-08-18T12:45:16.0000000",                               
                            " 2018-08-18T12:45:16.0000000Z ",
                            "2018-08-18T12:45:16.0000000+02:00",
                            "2018-08-18T12:45:16.0000000-07:00" } 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal)   
   End Sub

   Private Sub ParseWithISO8601(dateStrings() As String, styles As DateTimeStyles)
      Console.WriteLine($"Parsing with {styles}:")
      Dim dat As DateTimeOffset
      For Each dateStr In dateStrings
         If DateTimeOffset.TryParseExact(dateStr, "O", Nothing, styles, dat) Then
            Console.WriteLine($"   {dateStr,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
         Else
            Console.WriteLine($"   Unable to convert '{dateStr}'")
         End If   
      Next 
   End Sub
End Module
' The example displays the following output:
'      Parsing with None:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AllowWhiteSpaces:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AdjustToUniversal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
'
'      -----
'
'      Parsing with AssumeLocal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AssumeUniversal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00

Megjegyzések

A metódus túlterhelése TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) hasonló a metódushoz, azzal a DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) kivétellel, hogy ez a metódus nem ad kivételt, ha az átalakítás sikertelen. Elemzi egy dátum és idő sztringképét, amely pontosan egyezik a format paraméter által megadott mintával. Ha a sztring nem felel meg ennek a input mintának, a paraméter által styles definiált üres terület néhány lehetséges variációjával, az elemzési művelet meghiúsul, és a metódus visszatér false.

A format paraméter egy sztring, amely egyetlen szabványos formátumkijelölőt vagy egy vagy több egyéni formátumkijelölőt tartalmaz, amelyek meghatározzák a szükséges mintát input. Az érvényes formázási kódokról további információt a Standard dátum- és időformátum sztringjei , valamint az egyéni dátum- és időformátum-sztringek című témakörben talál. Ha format az zeltolást jelző , zzvagy zzz egyéni formátumjelölőket is tartalmaz, akkor az eltolásnak inputnegatív vagy pozitív előjelet kell tartalmaznia. Ha a jel hiányzik, az elemzési művelet meghiúsul, és a metódus visszatér false.

Ha format dátumot input , de nem időpontot kell tartalmaznia, az eredményként kapott DateTimeOffset objektumhoz éjféli időpont lesz hozzárendelve (0:00:00). Ha format ehhez input idő szükséges, de dátumot nem, akkor az eredményként kapott DateTimeOffset objektum a helyi rendszeren az aktuális dátumot rendeli hozzá. Ha format nincs szükség eltolásra input , az eredményként kapott DateTimeOffset objektum eltolása a styles paraméter értékétől függ. Ha styles tartalmazza AssumeLocal, a helyi időzóna eltolása hozzá lesz rendelve az DateTimeOffset objektumhoz. Ha styles tartalmazza AssumeUniversal, az egyezményes világidő (UTC) eltolása vagy +00:00 az objektumhoz DateTimeOffset van rendelve. Ha egyik érték sincs megadva, a rendszer a helyi időzóna eltolását használja.

A megadott dátum- és időszimbólumokat és sztringeket input a formatProvider paraméter határozza meg. Ugyanez igaz a szabványos formátumkijelölő sztring pontos mintájára inputformat is. A formatProvider paraméter a következők egyike lehet:

Ha formatprovider igen null, akkor a rendszer az CultureInfo aktuális kultúrának megfelelő objektumot használja.

A styles paraméter meghatározza, hogy engedélyezett-e szabad terület a bemeneti sztringben, jelzi, hogy az explicit eltolási összetevő nélküli sztringek hogyan lesznek elemezve, és támogatja az UTC-konverziót az elemzési művelet részeként. Az enumerálás minden tagja DateTimeStyles támogatott, kivéve NoCurrentDateDefault. Az alábbi táblázat az egyes támogatott tagok hatását sorolja fel.

DateTimeStyles tag Magatartás
AdjustToUniversal input Elemzi és szükség esetén UTC-vé alakítja át. Ez egyenértékű egy sztring elemzésével, majd a DateTimeOffset.ToUniversalTime visszaadott DateTimeOffset objektum metódusának meghívásával.
AssumeLocal Ha format nincs szükség input eltolásértékre, a visszaadott DateTimeOffset objektum a helyi időzóna eltolását kapja. Ez az alapértelmezett viselkedés.
AssumeUniversal Ha format nincs szükség eltolásértékre input , a visszaadott DateTimeOffset objektum utc-eltolást (+00:00) kap.
AllowInnerWhite Lehetővé teszi input a formátum által nem megadott belső térköz hozzáadását. A dátum- és időösszetevők és az egyes összetevők között – az eltolástól eltérően – további üres terület jelenhet meg, és a sztring elemzésekor figyelmen kívül hagyja.
AllowLeadingWhite Lehetővé teszi input a nem megadott kezdő szóközök hozzáadását format. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowTrailingWhite Lehetővé teszi input a nem megadott záró szóközök hozzáadását format. Ezek figyelmen kívül lesznek hagyva a sztring elemzésekor.
AllowWhiteSpaces Lehetővé teszi input a bevezető, záró és belső szóközök hozzáadását format. A sztring elemzésekor a rendszer figyelmen kívül hagyja az összes nem megadott format szóköz karaktert.
None Azt jelzi, hogy a további szabad terület nem engedélyezett.input A szóköznek pontosan a megadott módon kell megjelennie.format Ez az alapértelmezett viselkedés.
RoundtripKind Nincs hatása, mert a DateTimeOffset szerkezet nem tartalmaz tulajdonságot Kind .

Megjegyzések a hívókhoz

A .NET Framework 4-ben a TryParseExactfalse ad vissza, ha az elemezni kívánt sztring tartalmaz egy óra összetevőt és egy am/PM-tervezőt, amely nincs egyetértésben. A .NET Framework 3.5-ös és korábbi verzióiban a rendszer figyelmen kívül hagyja az AM/PM-tervezőt.

Lásd még

A következőre érvényes: