Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приводятся дополнительные замечания к справочной документации по этому API.
Метод DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) анализирует строку, которая может содержать сведения о дате, времени и часовом поясе. Он аналогичен методу DateTime.Parse(String, IFormatProvider, DateTimeStyles) , за исключением того, что DateTime.TryParse(String, DateTime) метод не создает исключение, если преобразование завершается ошибкой.
Этот метод пытается игнорировать нераспознанные данные и полностью анализировать входную строку (s
). Если s
содержит время, но нет даты, метод по умолчанию заменяет текущую дату или, если styles
он включает NoCurrentDateDefault флаг, он заменяет DateTime.Date.MinValue
. Если s
содержит дату, но не время, 12:00 полуночи используется в качестве времени по умолчанию. Если дата присутствует, но её компонент года состоит только из двух цифр, она преобразуется в год в provider
текущем календаре параметра на основе значения свойства Calendar.TwoDigitYearMax. Любые начальные, внутренние или конечные пробелы в s
игнорируются. Дата и время можно заключить в скобки с парой символов с начальным и конечным номером ('#', U+00023), а также с одним или несколькими символами NULL (U+0000).
Определенные допустимые форматы элементов даты и времени, а также имена и символы, используемые в датах и времени, определяются provider
параметром, который может быть любым из следующих:
- Объект CultureInfo, представляющий культуру, форматирование которой используется в параметре
s
. Объект, DateTimeFormatInfo возвращаемый свойством CultureInfo.DateTimeFormat , определяет форматирование, используемое вs
. -
DateTimeFormatInfo Объект, определяющий форматирование, используемое в
s
. - Настраиваемая IFormatProvider реализация. Его IFormatProvider.GetFormat метод возвращает объект DateTimeFormatInfo, задающий форматирование, используемое в
s
.
Если provider
является null
, используется текущая культура.
Если s
строковое представление високосного дня в високосном году в текущем календаре, метод успешно анализирует s
. Если s
— строковое представление високосного дня в невисокосный год в календаре provider
, операция синтаксического анализа завершается ошибкой, и метод возвращает false
.
Параметр styles
определяет точную интерпретацию синтаксического анализа строки и способ обработки операции синтаксического анализа. Это может быть один или несколько элементов DateTimeStyles перечисления, как описано в следующей таблице.
Член DateTimeStyles | Описание |
---|---|
AdjustToUniversal | Анализирует s и при необходимости преобразует его в UTC. Если s включает смещение часового пояса или s не содержит сведений о часовом поясе, но styles содержит DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime преобразование возвращаемого DateTime значения в формате UTC и задает для свойства значение KindDateTimeKind.Utc. Если s указывает, что он представляет UTC, или s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeUniversal, метод анализирует строку, не выполняет преобразование часового пояса для возвращаемого значения DateTime и устанавливает для свойства Kind значение DateTimeKind.Utc. Во всех остальных случаях флаг не действует. |
AllowInnerWhite | Хотя допустимо, это значение игнорируется. В элементах даты и времени s допускается внутренний пробел. |
AllowLeadingWhite | Хотя допустимо, это значение игнорируется. В элементах s даты и времени допускаются ведущие пробелы. |
AllowTrailingWhite | Хотя допустимо, это значение игнорируется. Конечный пробел разрешен в элементах даты и времени s . |
AllowWhiteSpaces | Указывает, что s может содержать начальные, внутренние и конечные пробелы. Это поведение по умолчанию. Его нельзя переопределить, указав более строгое DateTimeStyles значение перечисления, например DateTimeStyles.None. |
AssumeLocal | Указывает, что если s нет сведений часового пояса, предполагается, что он представляет локальное время. Если DateTimeStyles.AdjustToUniversal флаг отсутствует, Kind для свойства возвращаемого DateTime значения задано значение DateTimeKind.Local. |
AssumeUniversal | Указывает, что если s нет сведений о часовом поясе, предполагается, что он представляет UTC. Если DateTimeStyles.AdjustToUniversal флаг отсутствует, метод преобразует возвращаемое DateTime значение из UTC в местное время и задает для свойства значение KindDateTimeKind.Local. |
None | Хотя допустимо, это значение игнорируется. |
RoundtripKind | Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование строки даты и времени в значение DateTime, у которого свойство Kind установлено в DateTimeKind.Local. Как правило, такая строка создается путем вызова DateTime.ToString(String) метода с помощью описателей формата "o", "r" или "u". |
Если s
не содержит информацию о часовом поясе, метод DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) возвращает значение, чьё свойство DateTime равно Kind, если не указан флаг DateTimeKind.Unspecified. Если s
включает сведения о часовом поясе или смещении часового пояса, метод DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) выполняет все необходимые преобразования времени и возвращает одно из следующих элементов:
- DateTime Значение, дата и время которого отражают местное время и свойство которого Kind .DateTimeKind.Local
- Или, если
styles
включает флаг AdjustToUniversal, значение DateTime, дата и время которого установлены в формате UTC, а свойство Kind имеет значение DateTimeKind.Utc.
Это поведение можно переопределить с помощью флага DateTimeStyles.RoundtripKind .
Анализ пользовательских региональных параметров
Если вы анализируете строку даты и времени, созданную для пользовательского языка и региональных параметров, используйте TryParseExact метод вместо TryParse метода, чтобы повысить вероятность успешности операции синтаксического анализа. Пользовательская строка даты и времени может быть сложной и трудной для анализа. Метод TryParse пытается проанализировать строку с несколькими неявными шаблонами синтаксического анализа, все из которых могут завершиться ошибкой. Напротив, метод требует явного обозначения одного или нескольких точных шаблонов синтаксического анализа, которые, скорее всего, TryParseExact будут успешными.
Дополнительные сведения о пользовательских языках и региональных параметрах см. в System.Globalization.CultureAndRegionInfoBuilder классе.