Metoda System.DateTime.TryParse
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Metoda DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) analyzuje řetězec, který může obsahovat informace o datu, čase a časovém pásmu. Podobá se DateTime.Parse(String, IFormatProvider, DateTimeStyles) metodě, s tím rozdílem, že DateTime.TryParse(String, DateTime) metoda nevyvolá výjimku, pokud převod selže.
Tato metoda se pokusí ignorovat nerozpoznaná data a úplně parsovat vstupní řetězec (s
). Pokud s
obsahuje čas, ale žádné datum, metoda ve výchozím nastavení nahradí aktuální datum nebo, pokud styles
obsahuje NoCurrentDateDefault příznak, nahradí DateTime.Date.MinValue
. Pokud s
obsahuje datum, ale bez času, použije se jako výchozí čas půlnoc 12:00. Pokud je datum přítomno, ale jeho rok se skládá pouze ze dvou číslic, převede se na rok v provider
aktuálním kalendáři parametru na základě hodnoty Calendar.TwoDigitYearMax vlastnosti. Všechny počáteční, vnitřní nebo koncové prázdné znaky s
se ignorují. Datum a čas je možné vytvořit závorkou s párem počátečních a koncových znaků NUMBER SIGN ('#', U+0023) a může být na konci s jedním nebo více znaky NULL (U+0000).
Konkrétní platné formáty pro prvky data a času, stejně jako názvy a symboly používané v datech a časech, jsou definovány parametrem provider
, který může být libovolný z následujících:
- Objekt CultureInfo , který představuje jazykovou verzi, jejíž formátování se používá v parametru
s
. Objekt DateTimeFormatInfo vrácený CultureInfo.DateTimeFormat vlastností definuje formátování použité vs
. - Objekt DateTimeFormatInfo , který definuje formátování použité v
s
. - Vlastní IFormatProvider implementace. Jeho IFormatProvider.GetFormat metoda vrátí DateTimeFormatInfo objekt, který definuje formátování použité v
s
.
Pokud provider
ano null
, použije se aktuální jazyková verze.
Pokud s
je řetězcové vyjádření přestupného dne v přestupném roce v aktuálním kalendáři, metoda se úspěšně parsuje s
. Pokud s
je řetězcové vyjádření přestupného dne v neskočném roce v aktuálním kalendáři provider
, parse operace selže a metoda vrátí false
.
Parametr styles
definuje přesnou interpretaci analyzovaného řetězce a způsob zpracování operace analýzy. Může to být jeden nebo více členů výčtu DateTimeStyles , jak je popsáno v následující tabulce.
Člen DateTimeStyles | Popis |
---|---|
AdjustToUniversal | Parsuje s a v případě potřeby ho převede na UTC. Pokud s zahrnuje posun časového pásma nebo pokud s neobsahuje žádné informace o časovém pásmu, ale styles obsahuje DateTimeStyles.AssumeLocal příznak, metoda analyzuje řetězec, volání ToUniversalTime převést vrácenou DateTime hodnotu na UTC a nastaví Kind vlastnost na DateTimeKind.Utc. Pokud s označuje, že představuje UTC, nebo pokud s neobsahuje informace o časovém pásmu, ale styles obsahuje DateTimeStyles.AssumeUniversal příznak, metoda parsuje řetězec, neprovádí převod časového pásma na vrácenou DateTime hodnotu a nastaví Kind vlastnost na DateTimeKind.Utc. Ve všech ostatních případech nemá příznak žádný vliv. |
AllowInnerWhite | Přestože je tato hodnota platná, je ignorována. Vnitřní prázdné znaky jsou povoleny v prvech data a času .s |
AllowLeadingWhite | Přestože je tato hodnota platná, je ignorována. Počáteční prázdné znaky jsou povoleny v elementech data a času .s |
AllowTrailingWhite | Přestože je tato hodnota platná, je ignorována. Koncové prázdné znaky jsou povoleny v prvech s data a času . |
AllowWhiteSpaces | Určuje, že s může obsahovat úvodní, vnitřní a koncové prázdné znaky. Toto je výchozí chování. Nelze jej přepsat zadáním přísnější DateTimeStyles hodnoty výčtu, například DateTimeStyles.None. |
AssumeLocal | Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se, že představuje místní čas. DateTimeStyles.AdjustToUniversal Pokud není příznak přítomen, Kind vlastnost vrácená DateTime hodnota je nastavena na DateTimeKind.Local. |
AssumeUniversal | Určuje, že pokud s chybí informace o časovém pásmu, předpokládá se, že představuje UTC. DateTimeStyles.AdjustToUniversal Pokud není příznak přítomen, metoda převede vrácenou DateTime hodnotu z UTC na místní čas a nastaví jeho Kind vlastnost na DateTimeKind.Local. |
None | Přestože je tato hodnota platná, je ignorována. |
RoundtripKind | U řetězců, které obsahují informace o časovém pásmu, se pokusí zabránit převodu řetězce data a času na DateTime hodnotu s jeho Kind vlastností nastavenou na DateTimeKind.Local. Takový řetězec je obvykle vytvořen voláním DateTime.ToString(String) metody pomocí specifikátorů standardního formátu "o", "r" nebo "u". |
Pokud s
neobsahuje žádné informace o časovém pásmu DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) , metoda vrátí DateTime hodnotu, jejíž Kind vlastnost je DateTimeKind.Unspecified , pokud styles
příznak indikuje jinak. Pokud s
obsahuje informace o posunu časového pásma nebo časového pásma, DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) metoda provede jakýkoli nezbytný časový převod a vrátí jednu z následujících možností:
- Hodnota DateTime , jejíž datum a čas odráží místní čas a jehož Kind vlastnost je DateTimeKind.Local.
- Nebo pokud
styles
obsahuje AdjustToUniversal příznak, hodnota, DateTime jejíž datum a čas odráží UTC a jehož Kind vlastnost je DateTimeKind.Utc.
Toto chování lze přepsat příznakem DateTimeStyles.RoundtripKind .
Analýza vlastních jazykových verzí
Pokud parsujete řetězec data a času vygenerovaný pro vlastní jazykovou verzi, použijte TryParseExact místo metody metodu TryParse ke zlepšení pravděpodobnosti, že operace analýzy bude úspěšná. Řetězec data a času vlastní jazykové verze může být složitý a obtížně parsovatelný. Metoda TryParse se pokusí analyzovat řetězec s několika implicitními vzory analýzy, z nichž všechny můžou selhat. Naproti tomu TryParseExact metoda vyžaduje, abyste explicitně určili jeden nebo více přesných vzorů analýzy, které budou pravděpodobně úspěšné.
Další informace o vlastních jazykových verzích najdete ve System.Globalization.CultureAndRegionInfoBuilder třídě.