Udostępnij za pomocą


Metoda System.DateTime.TryParse

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 to jej składnik roku składa się tylko z dwóch cyfr, konwertuje się na rok w bieżącym kalendarzu parametru provider na podstawie właściwości Calendar.TwoDigitYearMax. Wszelkie wiodące, wewnętrzne lub końcowe białe znaki w obiekcie s są ignorowane. Data i godzina mogą być oznaczone parą wiodących i końcowych znaków numeru ('#', U+0023) i mogą być zakończone jednym lub większą liczbą 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:

Jeśli provider to null, używana jest bieżąca kultura.

Jeśli s jest ciągiem znaków reprezentującym dzień przestępny w roku przestępnym w bieżącym kalendarzu, metoda pomyślnie przeanalizuje s. Jeśli s jest ciągiem reprezentującym dzień przestępny w nieprzestępnym roku w bieżącym kalendarzu provider, operacja analizy kończy się niepowodzeniem, a metoda zwraca false.

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 wyliczenia DateTimeStyles, jak opisano w poniższej tabeli.

Członek 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 ma wpływu.
AllowInnerWhite Mimo że jest prawidłowa, ta wartość jest ignorowana. Odstęp wewnętrzny jest dozwolony w elementach daty i godziny s.
AllowLeadingWhite Mimo że jest prawidłowa, ta wartość jest ignorowana. Wiodące białe znaki są dozwolone w elementach daty i godziny s.
AllowTrailingWhite Mimo że jest prawidłowa, ta wartość 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. Jest to 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. O ile flaga DateTimeStyles.AdjustToUniversal nie jest obecna, Kind właściwość zwróconej DateTime wartości jest ustawiona na DateTimeKind.Local.
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 Mimo że jest prawidłowa, ta wartość jest ignorowana.
RoundtripKind Dla ciągów zawierających informacje o strefie czasowej, próbuje zapobiec konwersji ciągu daty i godziny na wartość DateTime z właściwością Kind ustawioną na DateTimeKind.Local. 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 DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) zwraca wartość DateTime, której właściwość Kind ma wartość DateTimeKind.Unspecified, chyba że flaga styles wskazuje inaczej. Jeśli s zawiera informacje dotyczące strefy czasowej lub przesunięcia strefy czasowej, metoda DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) wykonuje wszelkie potrzebne konwersje czasu i zwraca jedną z następujących wartości:

To zachowanie można zastąpić za pomocą flagi DateTimeStyles.RoundtripKind .

Parsowanie 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 znaków daty i czasu w danej kulturze może być skomplikowany i trudny do przeanalizowania. Metoda TryParse próbuje przeanalizować ciąg z kilkoma niejawnymi wzorcami analizy, z których wszystkie mogą zakończyć się niepowodzeniem. Z kolei metoda TryParseExact wymaga jawnego wyznaczenia co najmniej jednego dokładnego wzorca parsowania, który prawdopodobnie powiedzie się.

Aby uzyskać więcej informacji na temat kultur niestandardowych, zapoznaj się z klasą System.Globalization.CultureAndRegionInfoBuilder.