DateTime.TryParseExact Метод

Определение

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

Перегрузки

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное представление диапазона даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)

Преобразовывает указанный диапазон символов даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

Комментарии

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва. Изменение эры затрагивает все приложения, использующие эти календари. Дополнительные сведения и определение того, затрагиваются ли ваши приложения, см. в разделе Обработка новой эры в японском календаре в .NET. сведения о тестировании приложений на Windows системах для обеспечения их готовности к изменению эры см. в разделе подготовка приложения к изменению японской эры. Дополнительные сведения о функциях .NET, поддерживающих календари с несколькими Эр, и рекомендации при работе с календарями, поддерживающими несколько эр, см. в разделе Работа с Эр.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное представление диапазона даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

public:
 static bool TryParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемые дату и время.

format
ReadOnlySpan<Char>

Необходимый формат s.

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.

style
DateTimeStyles

Побитовая комбинация одного или нескольких значений перечисления, которые указывают на разрешенный формат параметра s.

result
DateTime

После возврата из этого метода содержит значение DateTime, эквивалентное дате и времени, заданным в параметре s, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей. Преобразование завершается неудачей, если в значением параметра s или format является null либо пустая строка, или не является дата и время, соответствующие шаблону, заданному в параметре format. Этот параметр передается неинициализированным.

Возвращаемое значение

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

Применяется к

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)

Преобразовывает указанный диапазон символов даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

public:
 static bool TryParseExact(ReadOnlySpan<char> s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий строку для анализа.

formats
String[]

Массив разрешенных форматов s.

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.

style
DateTimeStyles

Побитовая комбинация значений перечисления, которая определяет, как интерпретировать проанализированную дату по отношению к текущему часовому поясу или текущей дате. Обычно указывается значение None.

result
DateTime

После возврата из этого метода содержит значение DateTime, эквивалентное дате и времени, заданным в параметре s, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей. Преобразование завершается неудачей, если значение параметра s равно null, Empty или в нем не содержится допустимое строковое представление даты и времени. Этот параметр передается неинициализированным.

Возвращаемое значение

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

Применяется к

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

public:
 static bool TryParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string? format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Параметры

s
String

Строка, содержащая дату и время, которые нужно преобразовать.

format
String

Необходимый формат s.

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.

style
DateTimeStyles

Побитовая комбинация одного или нескольких значений перечисления, которые указывают на разрешенный формат параметра s.

result
DateTime

После возврата из этого метода содержит значение DateTime, эквивалентное дате и времени, заданным в параметре s, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей. Преобразование завершается неудачей, если в значением параметра s или format является null либо пустая строка, или не является дата и время, соответствующие шаблону, заданному в параметре format. Этот параметр передается неинициализированным.

Возвращаемое значение

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

Исключения

styles не является допустимым значением DateTimeStyles.

-или- styles содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).

Примеры

В следующем примере демонстрируется DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метод. Обратите внимание, что строка "5/01/2009 8:30 AM" не может быть успешно проанализирована, если styles параметр равен, DateTimeStyles.None поскольку начальные пробелы запрещены format . Кроме того, строка "5/01/2009 09:00" не может быть успешно проанализирована с помощью format "mm/dd/иииихх: mm", так как строка даты не предшествует номеру месяца с нулем в начале, как format требует.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = new CultureInfo("en-US");
      string dateString;
      DateTime dateValue;

      // Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM";
      if (DateTime.TryParseExact(dateString, "g", enUS,
                                 DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Allow a leading space in the date string.
      if (DateTime.TryParseExact(dateString, "g", enUS,
                                 DateTimeStyles.AllowLeadingWhite, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Use custom formats with M and MM.
      dateString = "5/01/2009 09:00";
      if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS,
                                 DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Allow a leading space in the date string.
      if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS,
                              DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00";
      if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
                              DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Allow a leading space in the date string.
      if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
                              DateTimeStyles.AdjustToUniversal, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z";
      if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
                                     DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
                                 DateTimeStyles.RoundtripKind, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
   }
}
// The example displays the following output:
//    ' 5/01/2009 8:30 AM' is not in an acceptable format.
//    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
//    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
//    '5/01/2009 09:00' is not in an acceptable format.
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String
      Dim dateValue As Date
      
      ' Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM"
      If Date.TryParseExact(dateString, "g", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      ' Allow a leading space in the date string.
      If Date.TryParseExact(dateString, "g", enUS, _
                            DateTimeStyles.AllowLeadingWhite, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      
      ' Use custom formats with M and MM.
      dateString = "5/01/2009 09:00"
      If Date.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      ' Allow a leading space in the date string.
      If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If

      ' Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00" 
      If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      ' Allow a leading space in the date string.
      If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                            DateTimeStyles.AdjustToUniversal, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
           
      ' Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z"
      If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      
      If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                            DateTimeStyles.RoundtripKind, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
   End Sub
End Module
' The example displays the following output:
'    ' 5/01/2009 8:30 AM' is not in an acceptable format.
'    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
'    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
'    '5/01/2009 09:00' is not in an acceptable format.
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).

Комментарии

DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)Метод анализирует строковое представление даты, которое должно быть в формате, определенном format параметром. Он аналогичен DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) методу, за исключением того, что TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метод не создает исключение, если преобразование завершается неудачей.

sПараметр содержит дату и время для синтаксического анализа и должен иметь формат, определенный format параметром. Если элементы даты, времени и часового пояса присутствуют в s , они также должны присутствовать в порядке, указанном параметром format . Если format определяет дату без элемента time и операция синтаксического анализа завершилась успешно, полученное DateTime значение будет иметь время полуночи (00:00:00). Если format определяет время без элемента даты и операция синтаксического анализа выполняется успешно, результирующее DateTime значение по умолчанию имеет дату DateTime.Now.Date или имеет дату, равное, DateTime.MinValue.Date Если styles включает DateTimeStyles.NoCurrentDateDefault флаг. styleПараметр определяет s , может ли параметр содержать начальные, внутренние или конечные символы пробела.

Если s не содержит сведений о часовом поясе, Kind свойство возвращаемого DateTime объекта имеет значение DateTimeKind.Unspecified . Это поведение можно изменить с помощью DateTimeStyles.AssumeLocal флага, возвращающего DateTime значение Kind , свойство которого равно DateTimeKind.Local или с помощью DateTimeStyles.AssumeUniversal DateTimeStyles.AdjustToUniversal флагов и, которые возвращают DateTime значение, Kind свойство которого равно DateTimeKind.Utc . Если параметр содержит сведения о часовом поясе, то при необходимости время преобразуется в местное время, а Kind свойство возвращаемого DateTime объекта устанавливается в значение DateTimeKind.Local . Это поведение можно изменить с помощью DateTimeStyles.RoundtripKind флага, чтобы не преобразовывать время в формате UTC в местное время и присвоить Kind свойству значение DateTimeKind.Utc .

formatПараметр содержит шаблон, соответствующий ожидаемому формату s параметра. Шаблон в format параметре состоит из одного или нескольких настраиваемых описателей формата в таблице строк настраиваемого формата даты и времени или одного стандартного описателя формата, который определяет стандартный шаблон из таблицы строк стандартного формата даты и времени .

Если в шаблоне пользовательского формата не используются разделители даты или времени, используйте инвариантный язык и региональные параметры для provider параметра и самую широкую форму каждого настраиваемого описателя формата. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму, "HH", а не более узкую форму "H".

Примечание

Вместо того чтобы требовать, чтобы s операция синтаксического анализа была выполнена в одном формате, можно вызвать DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метод и указать несколько разрешенных форматов. Это делает операцию анализа более вероятной для выполнения.

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в, s определяются provider параметром, а — точным форматом, s Если format является строкой описателя стандартного формата. providerПараметр может быть любым из следующих:

  • CultureInfoОбъект, представляющий язык и региональные параметры, используемые для интерпретации s . DateTimeFormatInfoОбъект, возвращаемый его DateTimeFormat свойством, определяет символы и форматирование в s .

  • DateTimeFormatInfoОбъект, определяющий формат данных даты и времени.

  • Пользовательская IFormatProvider реализация, GetFormat метод которой возвращает либо CultureInfo объект, либо DateTimeFormatInfo объект, предоставляющий сведения о форматировании.

Если provider параметр имеет значение null , то CultureInfo используется объект, соответствующий текущему языку и региональным параметрам.

stylesПараметр включает один или несколько элементов DateTimeStyles перечисления, которые определяют, может ли и где пустое пространство, не определенное, format могут появляться в s и управляют точным поведением операции синтаксического анализа. В следующей таблице описано, как каждый член DateTimeStyles перечисления влияет на работу TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метода.

DateTimeStyles, элемент Описание
AdjustToUniversal Выполняет синтаксический анализ s и, при необходимости, преобразует его в время в формате UTC. Если параметр s включает смещение часового пояса или s не содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает, ToUniversalTime чтобы преобразовать возвращенное DateTime значение в формат UTC, и устанавливает Kind свойство в значение DateTimeKind.Utc . Если s указывает, что он представляет время в формате UTC или не s содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeUniversal флаг, метод анализирует строку, не выполняет преобразование часового пояса для возвращаемого DateTime значения и устанавливает Kind свойство в значение DateTimeKind.Utc . Во всех остальных случаях флаг не оказывает никакого влияния.
AllowInnerWhite Указывает, что пробелы, не определенные, format могут находиться между любым отдельным элементом даты или времени.
AllowLeadingWhite Указывает, что пробелы, не определенные, format могут присутствовать в начале s .
AllowTrailingWhite Указывает, что пробелы, не определенные, format могут присутствовать в конце s .
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные в format .
AssumeLocal Указывает, что при s отсутствии сведений о часовом поясе предполагается, что оно представляет местное время. Если DateTimeStyles.AdjustToUniversal флаг не указан, Kind свойство возвращаемого DateTime значения устанавливается в значение DateTimeKind.Local .
AssumeUniversal Указывает, что при s отсутствии сведений о часовом поясе предполагается, что оно представляет время в формате UTC. Если DateTimeStyles.AdjustToUniversal флаг не указан, метод преобразует возвращенное DateTime значение из времени в формате UTC в местное время и устанавливает Kind для его свойства значение DateTimeKind.Local .
NoCurrentDateDefault Если параметр s содержит время без сведений о дате, то дата возвращаемого значения устанавливается равным DateTime.MinValue.Date .
None sПараметр анализируется с использованием значений по умолчанию. Пробелы, кроме тех, которые есть в, не format допускаются. Если s компонент даты отсутствует, Дата возвращаемого DateTime значения устанавливается равным 1/1/0001. Если s не содержит сведений о часовом поясе, Kind свойство возвращаемого DateTime объекта устанавливается в значение DateTimeKind.Unspecified . Если сведения о часовом поясе представлены в s , то время преобразуется в местное время, а Kind свойство возвращаемого DateTime объекта устанавливается в значение DateTimeKind.Local .
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в DateTime значение со свойством, равным Kind DateTimeKind.Local . Этот флаг, в первую очередь, предотвращает преобразование времени в формате UTC в местное время.

Примечания для тех, кто вызывает этот метод

в платформа .NET Framework 4 TryParseExact метод возвращает значение, false если строка для синтаксического анализа содержит компонент часов и обозначение AM/PM, который не является соглашением. в платформа .NET Framework 3,5 и более ранних версиях указатель AM/PM игнорируется.

См. также раздел

Применяется к

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.

public:
 static bool TryParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Параметры

s
String

Строка, содержащая дату и время, которые нужно преобразовать.

formats
String[]

Массив разрешенных форматов s.

provider
IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров.

style
DateTimeStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s. Обычно указывается значение None.

result
DateTime

После возврата из этого метода содержит значение DateTime, эквивалентное дате и времени, заданным в параметре s, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей. Преобразование завершается неудачей, если s или formats имеет значение null, либо s или элемент formats является пустой строкой, либо формат s не в точности соответствует заданному хотя бы одним из шаблонов формата в formats. Этот параметр передается неинициализированным.

Возвращаемое значение

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

Исключения

styles не является допустимым значением DateTimeStyles.

-или- styles содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).

Примеры

В следующем примере метод используется DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) для проверки возможности успешного анализа строки в ряде возможных форматов.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm",
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
                              "5/1/2009 6:32:00", "05/01/2009 06:32",
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"};
      DateTime dateValue;

      foreach (string dateString in dateStrings)
      {
         if (DateTime.TryParseExact(dateString, formats,
                                    new CultureInfo("en-US"),
                                    DateTimeStyles.None,
                                    out dateValue))
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         else
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
      }
   }
}
// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
                                 "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
                                 "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
                                 "M/d/yyyy h:mm", "M/d/yyyy h:mm", _
                                 "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}
      Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
                                     "5/1/2009 6:32:00", "05/01/2009 06:32", _
                                     "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"} 

      Dim dateValue As DateTime
      
      For Each dateString As String In dateStrings
         If Date.TryParseExact(dateString, formats, _
                               New CultureInfo("en-US"), _
                               DateTimeStyles.None, _
                               dateValue) Then
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
         Else
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
         End If                                               
      Next
   End Sub   
End Module
' The example displays the following output:
'       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
'       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.

Комментарии

DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)Метод анализирует строковое представление даты, соответствующее любому из шаблонов, назначенных formats параметру. Он похож на DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) метод, за исключением того, что TryParseExact метод не создает исключение, если преобразование завершается неудачей.

sПараметр содержит дату и время для синтаксического анализа. Если s параметр содержит только время и дату, используется текущая дата, если только style параметр не включает DateTimeStyles.NoCurrentDateDefault флаг, в этом случае используется дата по умолчанию ( DateTime.Date.MinValue ). Если s параметр содержит только дату и время, то используется полночь (00:00:00). styleПараметр также определяет, может ли s параметр содержать начальные, внутренние или конечные символы пробела, отличные от тех, которые разрешены одной из строк формата в formats .

Если s не содержит сведений о часовом поясе, Kind свойство возвращаемого DateTime объекта имеет значение DateTimeKind.Unspecified . Это поведение можно изменить с помощью DateTimeStyles.AssumeLocal флага, возвращающего DateTime значение Kind , свойство которого равно DateTimeKind.Local или с помощью DateTimeStyles.AssumeUniversal DateTimeStyles.AdjustToUniversal флагов и, которые возвращают DateTime значение, Kind свойство которого равно DateTimeKind.Utc . Если параметр содержит сведения о часовом поясе, то при необходимости время преобразуется в местное время, а Kind свойство возвращаемого DateTime объекта устанавливается в значение DateTimeKind.Local . Это поведение можно изменить с помощью DateTimeStyles.RoundtripKind флага, чтобы не преобразовывать время в формате UTC в местное время и присвоить Kind свойству значение DateTimeKind.Utc .

formatsПараметр содержит массив шаблонов, один из которых s должен точно соответствовать, если операция синтаксического анализа выполнена. Шаблоны в formats параметре состоят из одного или нескольких настраиваемых описателей формата в таблице строк настраиваемого формата даты и времени или одного стандартного описателя формата, который определяет стандартный шаблон из таблицы строк стандартного формата даты и времени .

Если в шаблоне пользовательского формата не используются разделители даты или времени, используйте инвариантный язык и региональные параметры для provider параметра и самую широкую форму каждого настраиваемого описателя формата. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму, "HH", а не более узкую форму "H".

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в, s определяются provider параметром, а — точным форматом, s Если format является строкой описателя стандартного формата. providerПараметр может быть любым из следующих:

  • CultureInfoОбъект, представляющий язык и региональные параметры, используемые для интерпретации s . DateTimeFormatInfoОбъект, возвращаемый его DateTimeFormat свойством, определяет символы и форматирование в s .

  • DateTimeFormatInfoОбъект, определяющий формат данных даты и времени.

  • Пользовательская IFormatProvider реализация, GetFormat метод которой возвращает либо CultureInfo объект, либо DateTimeFormatInfo объект, предоставляющий сведения о форматировании.

Если provider параметр имеет значение null , то CultureInfo используется объект, соответствующий текущему языку и региональным параметрам.

stylesПараметр включает один или несколько элементов DateTimeStyles перечисления, которые определяют, может ли и где пустое пространство, не определенное, format могут появляться в s и управляют точным поведением операции синтаксического анализа. В следующей таблице описано, как каждый член DateTimeStyles перечисления влияет на работу TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метода.

DateTimeStyles, элемент Описание
AdjustToUniversal Выполняет синтаксический анализ s и, при необходимости, преобразует его в время в формате UTC. Если параметр s включает смещение часового пояса или s не содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает, ToUniversalTime чтобы преобразовать возвращенное DateTime значение в формат UTC, и устанавливает Kind свойство в значение DateTimeKind.Utc . Если s указывает, что он представляет время в формате UTC или не s содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeUniversal флаг, метод анализирует строку, не выполняет преобразование часового пояса для возвращаемого DateTime значения и устанавливает Kind свойство в значение DateTimeKind.Utc . Во всех остальных случаях флаг не оказывает никакого влияния.
AllowInnerWhite Указывает, что пробелы, не определенные, format могут находиться между любым отдельным элементом даты или времени.
AllowLeadingWhite Указывает, что пробелы, не определенные, format могут присутствовать в начале s .
AllowTrailingWhite Указывает, что пробелы, не определенные, format могут присутствовать в конце s .
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные в format .
AssumeLocal Указывает, что при s отсутствии сведений о часовом поясе предполагается, что оно представляет местное время. Если DateTimeStyles.AdjustToUniversal флаг не указан, Kind свойство возвращаемого DateTime значения устанавливается в значение DateTimeKind.Local .
AssumeUniversal Указывает, что при s отсутствии сведений о часовом поясе предполагается, что оно представляет время в формате UTC. Если DateTimeStyles.AdjustToUniversal флаг не указан, метод преобразует возвращенное DateTime значение из времени в формате UTC в местное время и устанавливает Kind для его свойства значение DateTimeKind.Local .
NoCurrentDateDefault Если параметр s содержит время без сведений о дате, то дата возвращаемого значения устанавливается равным DateTime.MinValue.Date .
None sПараметр анализируется с использованием значений по умолчанию. Пробелы, кроме тех, которые есть в, не format допускаются. Если s компонент даты отсутствует, Дата возвращаемого DateTime значения устанавливается равным 1/1/0001. Если s не содержит сведений о часовом поясе, Kind свойство возвращаемого DateTime объекта устанавливается в значение DateTimeKind.Unspecified . Если сведения о часовом поясе представлены в s , то время преобразуется в местное время, а Kind свойство возвращаемого DateTime объекта устанавливается в значение DateTimeKind.Local .
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в DateTime значение со свойством, равным Kind DateTimeKind.Local . Этот флаг, в первую очередь, предотвращает преобразование времени в формате UTC в местное время.

Примечания для тех, кто вызывает этот метод

в платформа .NET Framework 4 TryParseExact метод возвращает значение, false если строка для синтаксического анализа содержит компонент часов и обозначение AM/PM, который не является соглашением. в платформа .NET Framework 3,5 и более ранних версиях указатель AM/PM игнорируется.

См. также раздел

Применяется к