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:

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 falsewartość .

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 sdaty i godziny elementu .
AllowLeadingWhite Choć ważna, wartość ta jest ignorowana. Wiodące białe znaki są dozwolone w elementach sdaty 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:

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 .