System.DateTime.TryParse, metoda
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Metoda DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) analizuje ciąg, który może zawierać informacje o dacie, godzinie i strefie czasowej. Jest ona podobna do DateTime.Parse(String, IFormatProvider, DateTimeStyles) metody, z tą różnicą, że DateTime.TryParse(String, DateTime) metoda nie zgłasza wyjątku w przypadku niepowodzenia konwersji.
Ta metoda próbuje zignorować nierozpoznane dane i całkowicie przeanalizować ciąg wejściowy (s
). Jeśli s
zawiera godzinę, ale bez daty, metoda domyślnie zastępuje bieżącą datę lub, jeśli styles
zawiera flagę NoCurrentDateDefault , zastępuje DateTime.Date.MinValue
. Jeśli s
zawiera datę, ale nie godzinę, 12:00 północ jest używana jako domyślny czas. Jeśli data jest obecna, ale jej składnik roku składa się tylko z dwóch cyfr, jest konwertowany na rok w provider
bieżącym kalendarzu parametru na podstawie wartości Calendar.TwoDigitYearMax właściwości. Wszelkie znaki wiodące, wewnętrzne lub końcowe białe znaki w obiekcie s
są ignorowane. Data i godzina mogą być w nawiasach z parą wiodących i końcowych znaków ZNAKU NUMERU ('#', U+0023) i może prowadzić do jednego lub większej liczby znaków NULL (U+0000).
Określone prawidłowe formaty elementów daty i godziny, a także nazwy i symbole używane w datach i godzinach, są definiowane przez provider
parametr , który może być dowolny z następujących:
- CultureInfo Obiekt reprezentujący kulturę, której formatowanie jest używane w parametrze
s
. Obiekt DateTimeFormatInfo zwracany przez CultureInfo.DateTimeFormat właściwość definiuje formatowanie używane w plikus
. - DateTimeFormatInfo Obiekt, który definiuje formatowanie używane w programie
s
. - Implementacja niestandardowa IFormatProvider . Metoda IFormatProvider.GetFormat zwraca DateTimeFormatInfo obiekt, który definiuje formatowanie używane w pliku
s
.
Jeśli provider
to null
, używana jest bieżąca kultura.
Jeśli s
jest ciągiem reprezentującym dzień przestępny w roku przestępnym w bieżącym kalendarzu, metoda zostanie pomyślnie przeanalizowana s
. Jeśli s
jest ciągiem reprezentującym dzień przestępny w bieżącym kalendarzu w bieżącym kalendarzu provider
, operacja analizy kończy się niepowodzeniem, a metoda zwraca false
wartość .
Parametr styles
definiuje dokładną interpretację przeanalizowanego ciągu i sposób obsługi operacji analizy. Może to być jeden lub więcej elementów DateTimeStyles członkowskich wyliczenia, zgodnie z opisem w poniższej tabeli.
Element członkowski DateTimeStyles | opis |
---|---|
AdjustToUniversal | s Analizuje i, w razie potrzeby, konwertuje go na UTC. Jeśli s zawiera przesunięcie strefy czasowej lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera DateTimeStyles.AssumeLocal flagę, metoda analizuje ciąg, wywołuje ToUniversalTime konwersję zwróconej DateTime wartości na UTC i ustawia Kind właściwość na DateTimeKind.Utc. Jeśli s wskazuje, że reprezentuje utc lub jeśli s nie zawiera informacji o strefie czasowej, ale styles zawiera flagę DateTimeStyles.AssumeUniversal , metoda analizuje ciąg, nie wykonuje konwersji strefy czasowej na zwracaną DateTime wartość i ustawia Kind właściwość na DateTimeKind.Utcwartość . We wszystkich innych przypadkach flaga nie wywiera żadnego wpływu. |
AllowInnerWhite | Choć ważna, wartość ta jest ignorowana. Odstęp wewnętrzny jest dozwolony w elementach s daty i godziny elementu . |
AllowLeadingWhite | Choć ważna, wartość ta jest ignorowana. Wiodące białe znaki są dozwolone w elementach s daty i godziny elementu . |
AllowTrailingWhite | Choć ważna, wartość ta jest ignorowana. Końcowy biały znak jest dozwolony w elementach daty i godziny elementu s . |
AllowWhiteSpaces | Określa, że s może zawierać wiodące, wewnętrzne i końcowe białe spacje. To jest zachowanie domyślne. Nie można go zastąpić przez podanie bardziej restrykcyjnej DateTimeStyles wartości wyliczenia, takiej jak DateTimeStyles.None. |
AssumeLocal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje czas lokalny. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, Kind właściwość zwróconej DateTime wartości jest ustawiona na DateTimeKind.Localwartość . |
AssumeUniversal | Określa, że jeśli s brakuje informacji o strefie czasowej, przyjmuje się, że reprezentuje utc. Jeśli flaga DateTimeStyles.AdjustToUniversal nie jest obecna, metoda konwertuje zwracaną DateTime wartość z czasu UTC na czas lokalny i ustawia jej Kind właściwość na DateTimeKind.Local. |
None | Choć ważna, wartość ta jest ignorowana. |
RoundtripKind | W przypadku ciągów zawierających informacje o strefie czasowej próbuje zapobiec konwersji ciągu daty i godziny na wartość z właściwością Kind ustawioną DateTime na DateTimeKind.Localwartość . Zazwyczaj taki ciąg jest tworzony przez wywołanie DateTime.ToString(String) metody przy użyciu specyfikatorów formatu standardowego "o", "r" lub "u". |
Jeśli s
nie zawiera informacji o strefie czasowej, metoda zwraca DateTime wartość, której Kind właściwość ma DateTimeKind.Unspecified wartość, DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) chyba że flaga styles
wskazuje inaczej. Jeśli s
zawiera informacje dotyczące przesunięcia strefy czasowej lub strefy czasowej, DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) metoda wykonuje dowolną wymaganą konwersję czasu i zwraca jedną z następujących wartości:
- DateTime Wartość, której data i godzina odzwierciedlają czas lokalny i którego Kind właściwość to DateTimeKind.Local.
- Lub, jeśli
styles
zawiera flagę AdjustToUniversalDateTime , wartość, której data i godzina odzwierciedlają utc i których Kind właściwość to DateTimeKind.Utc.
To zachowanie można zastąpić za pomocą flagi DateTimeStyles.RoundtripKind .
Analizowanie kultur niestandardowych
Jeśli analizujesz ciąg daty i godziny wygenerowany dla kultury niestandardowej, użyj TryParseExact metody zamiast TryParse metody , aby poprawić prawdopodobieństwo, że operacja analizy powiedzie się. Niestandardowy ciąg daty i godziny kultury może być skomplikowany i trudny do przeanalizowana. Metoda TryParse próbuje przeanalizować ciąg z kilkoma niejawnymi wzorcami analizy, z których wszystkie mogą zakończyć się niepowodzeniem. Z kolei TryParseExact metoda wymaga jawnego wyznaczenia co najmniej jednego dokładnego wzorca analizy, które prawdopodobnie powiedzie się.
Aby uzyskać więcej informacji na temat kultur niestandardowych, zobacz klasę System.Globalization.CultureAndRegionInfoBuilder .