DateTime.TryParseExact Метод

Определение

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime.Converts the specified string representation of a date and time to its DateTime equivalent. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match a specified format exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.The method returns a value that indicates whether the conversion succeeded.

Перегрузки

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

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match the specified format exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.The method returns a value that indicates whether the conversion succeeded.

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

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату.The format of the string representation must match at least one of the specified formats exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.The method returns a value that indicates whether the conversion succeeded.

Комментарии

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Изменение эры затрагивает все приложения, использующие эти календари.Such a change of era affects all applications that use these calendars. Из раздела Обработка новой эры по японскому календарю в .NET можно почерпнуть дополнительные сведения, а также узнать, затронуты ли ваши приложения этим изменением.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Сведения о тестировании приложений в системах Windows для обеспечения их готовности к работе в новой эре см. в разделе Подготовка приложения к изменению эры по японскому календарю.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Сведения о функциях в .NET, которые поддерживают календарь с несколькими эрами, и рекомендации по использованию таких календарей см. в разделе о работе с эрами.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, 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);
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

Параметры

format
ReadOnlySpan<Char>
provider
IFormatProvider
result
DateTime

Возвраты

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, 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);
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

Параметры

formats
String[]
provider
IFormatProvider
result
DateTime

Возвраты

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

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match the specified format exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.The method returns a value that indicates whether the conversion succeeded.

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);
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

Строка, содержащая дату и время, которые нужно преобразовать.A string containing a date and time to convert.

format
String

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

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles

Побитовая комбинация одного или нескольких значений перечисления, которые указывают на разрешенный формат параметра s.A bitwise combination of one or more enumeration values that indicate the permitted format of s.

result
DateTime

После возврата из этого метода содержит значение DateTime, эквивалентное дате и времени, заданным в параметре s, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей.When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. Преобразование завершается неудачей, если в значением параметра s или format является null либо пустая строка, или не является дата и время, соответствующие шаблону, заданному в параметре format.The conversion fails if either the s or format parameter is null, is an empty string, or does not contain a date and time that correspond to the pattern specified in format. Этот параметр передается неинициализированным.This parameter is passed uninitialized.

Возвраты

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

Исключения

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

- или --or- styles содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).styles contains an invalid combination of DateTimeStyles values (for example, both AssumeLocal and AssumeUniversal).

Примеры

В следующем примере демонстрируется использование метода DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime).The following example demonstrates the DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) method. Обратите внимание, что строка "5/01/2009 8:30 AM" не может быть успешно проанализирована, если параметр styles равен DateTimeStyles.None, так как в format не допускаются начальные пробелы.Note that the string " 5/01/2009 8:30 AM" cannot be parsed successfully when the styles parameter equals DateTimeStyles.None because leading spaces are not allowed by format. Кроме того, невозможно успешно выполнить синтаксический анализ строки "5/01/2009 09:00" с format из "MM/ДД/иииихх: mm", так как строка даты не предшествует номеру месяца с нулем в начале, так как format требует.Additionally, the string "5/01/2009 09:00" cannot be parsed successfully with a format of "MM/dd/yyyyhh:mm" because the date string does not precede the month number with a leading zero, as format requires.

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.The DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) method parses the string representation of a date, which must be in the format defined by the format parameter. Он аналогичен методу DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles), за исключением того, что метод TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) не создает исключение в случае сбоя преобразования.It is similar to the DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method, except that the TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) method does not throw an exception if the conversion fails.

Параметр s содержит дату и время для синтаксического анализа и должно иметь формат, определенный параметром format.The s parameter contains the date and time to parse and must be in a format defined by the format parameter. Если в s присутствуют элементы даты, времени и часового пояса, они также должны присутствовать в порядке, заданном format.If date, time, and time zone elements are present in s, they must also appear in the order specified by format. Если format определяет дату без элемента времени и операция синтаксического анализа выполняется успешно, то полученное значение DateTime будет иметь время полуночи (00:00:00).If format defines a date with no time element and the parse operation succeeds, the resulting DateTime value has a time of midnight (00:00:00). Если format определяет время без элемента даты и операция синтаксического анализа выполняется успешно, результирующее значение DateTime по умолчанию имеет дату DateTime.Now.Date или имеет дату DateTime.MinValue.Date, если styles включает флаг DateTimeStyles.NoCurrentDateDefault.If format defines a time with no date element and the parse operation succeeds, the resulting DateTime value by default has a date of DateTime.Now.Date, or it has a date of DateTime.MinValue.Date if styles includes the DateTimeStyles.NoCurrentDateDefault flag. Параметр style определяет, может ли параметр s содержать начальные, внутренние или конечные символы пробела.The style parameter determines whether the s parameter can contain leading, inner, or trailing white space characters.

Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime имеет значение DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal, возвращающего DateTime значение, свойство Kind которого равно DateTimeKind.Local, или с помощью флагов DateTimeStyles.AssumeUniversal и DateTimeStyles.AdjustToUniversal, которые возвращают значение Kind, свойство которого равно DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. Если параметр содержит сведения о часовом поясе, то время преобразуется в местное время, если это необходимо, а свойство Kind возвращенного объекта DateTime имеет значение DateTimeKind.Local.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. Это поведение можно изменить с помощью флага DateTimeStyles.RoundtripKind, чтобы не преобразовывать время в формате UTC в местное время и установить свойство Kind в значение DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind.Utc.

Параметр format содержит шаблон, соответствующий ожидаемому формату параметра s.The format parameter contains a pattern that corresponds to the expected format of the s parameter. Шаблон в параметре format состоит из одного или нескольких настраиваемых описателей формата в таблице строк настраиваемого формата даты и времени или одного стандартного описателя формата, который определяет предопределенный шаблон с учетом стандартной даты и времени. Формат таблицы строк .The pattern in the format parameter consists of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

Если в шаблоне пользовательского формата не используются разделители даты или времени, используйте инвариантный язык и региональные параметры для параметра provider и самую широкую форму описателя настраиваемого формата.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму, "HH", а не более узкую форму "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Примечание

Вместо того чтобы s соответствовать одному формату, чтобы операция синтаксического анализа была выполнена, можно вызвать метод DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) и указать несколько разрешенных форматов.Rather than requiring that s conform to a single format for the parse operation to succeed, you can call the DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method and specify multiple permitted formats. Это делает операцию анализа более вероятной для выполнения.This makes the parse operation more likely to succeed.

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в s, определяются параметром provider, как и точный формат s, если format является строкой описателя стандартного формата.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. Параметр provider может быть любым из следующих:The provider parameter can be any of the following:

  • Объект CultureInfo, представляющий язык и региональные параметры, используемые для интерпретации s.A CultureInfo object that represents the culture used to interpret s. Объект DateTimeFormatInfo, возвращенный свойством DateTimeFormat, определяет символы и форматирование в s.The DateTimeFormatInfo object returned by its DateTimeFormat property defines the symbols and formatting in s.

  • Объект DateTimeFormatInfo, определяющий формат данных даты и времени.A DateTimeFormatInfo object that defines the format of date and time data.

  • Пользовательская реализация IFormatProvider, метод GetFormat, возвращает либо объект CultureInfo, либо объект DateTimeFormatInfo, предоставляющий сведения о форматировании.A custom IFormatProvider implementation whose GetFormat method returns either the CultureInfo object or the DateTimeFormatInfo object that provides formatting information.

Если provider равно null, то используется объект CultureInfo, соответствующий текущему языку и региональным параметрам.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Параметр styles включает один или несколько элементов перечисления DateTimeStyles, которые определяют, могут ли и где пробелы, не определенные format, отображаться в s, и управлять точным поведением операции синтаксического анализа.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. В следующей таблице описано, как каждый элемент перечисления DateTimeStyles влияет на работу метода TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime).The following table describes how each member of the DateTimeStyles enumeration affects the operation of the TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) method.

DateTimeStyles, элементDateTimeStyles member ОписаниеDescription
AdjustToUniversal Выполняет синтаксический анализ s и при необходимости преобразует его в время в формате UTC.Parses s and, if necessary, converts it to UTC. Если s включает смещение часового пояса или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeLocal, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращенного значения DateTime в формат UTC и задает для свойства Kind значение DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Если s указывает, что он представляет время в формате UTC или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeUniversal, метод анализирует строку, не выполняет преобразование часового пояса для возвращенного значения DateTime и устанавливает свойство Kind. в DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. Во всех остальных случаях флаг не оказывает никакого влияния.In all other cases, the flag has no effect.
AllowInnerWhite Указывает, что пробелы, не определенные format, могут отображаться между любым отдельным элементом даты или времени.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Указывает, что пробелы, не определенные format, могут присутствовать в начале s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Указывает, что пробелы, не определенные format, могут присутствовать в конце s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что оно представляет местное время.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, свойство Kind возвращаемого значения DateTime устанавливается в DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что он представляет время в формате UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, метод преобразует возвращенное значение DateTime из UTC в местное время и устанавливает для его свойства Kind значение DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault Если s содержит сведения о времени без даты, то дата возвращаемого значения устанавливается равным DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Параметр s анализируется с использованием значений по умолчанию.The s parameter is parsed using default values. В format не допускаются пробелы, кроме тех, что есть.No white space other than that present in format is allowed. Если s не имеет компонента даты, то дата возвращаемого значения DateTime устанавливается равным 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Если сведения о часовом поясе находятся в s, время преобразуется в местное время, а свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Local.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в значение DateTime со свойством Kind, равным DateTimeKind.Local.For strings that contain time zone information, tries to prevent the conversion to a DateTime value with its Kind property set to DateTimeKind.Local. Этот флаг, в первую очередь, предотвращает преобразование времени в формате UTC в местное время.This flag primarily prevents the conversion of UTC times to local times.

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

В .NET Framework 4.NET Framework 4 метод TryParseExact возвращает false, если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the TryParseExact method returns false if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях указатель AM/PM игнорируется.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Дополнительно

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

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату.The format of the string representation must match at least one of the specified formats exactly. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.The method returns a value that indicates whether the conversion succeeded.

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);
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

Строка, содержащая дату и время, которые нужно преобразовать.A string that contains a date and time to convert.

formats
String[]

Массив разрешенных форматов s.An array of allowable formats of s.

provider
IFormatProvider

Объект, предоставляющий сведения о формате параметра s для определенного языка и региональных параметров.An object that supplies culture-specific format information about s.

style
DateTimeStyles

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s.A bitwise combination of enumeration values that indicates the permitted format of s. Обычно указывается значение None.A typical value to specify is None.

result
DateTime

После возврата из этого метода содержит значение DateTime, эквивалентное дате и времени, заданным в параметре s, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей.When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. Преобразование завершается неудачей, если s или formats имеет значение null, либо s или элемент formats является пустой строкой, либо формат s не в точности соответствует заданному хотя бы одним из шаблонов формата в formats.The conversion fails if s or formats is null, s or an element of formats is an empty string, or the format of s is not exactly as specified by at least one of the format patterns in formats. Этот параметр передается неинициализированным.This parameter is passed uninitialized.

Возвраты

Значение true, если параметр s успешно преобразован; в противном случае — значение false.true if the s parameter was converted successfully; otherwise, false.

Исключения

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

-или--or- styles содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).styles contains an invalid combination of DateTimeStyles values (for example, both AssumeLocal and AssumeUniversal).

Примеры

В следующем примере используется метод DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime), чтобы обеспечить возможность успешного анализа строки в ряде возможных форматов.The following example uses the DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) method to ensure that a string in a number of possible formats can be successfully parsed .

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.The DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method parses the string representation of a date that matches any one of the patterns assigned to the formats parameter. Он похож на метод DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), за исключением того, что метод TryParseExact не создает исключение в случае сбоя преобразования.It is like the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method, except the TryParseExact method does not throw an exception if the conversion fails.

Параметр s содержит дату и время для синтаксического анализа.The s parameter contains the date and time to parse. Если параметр s содержит только время и дату, используется текущая дата, если параметр style не включает флаг DateTimeStyles.NoCurrentDateDefault. в этом случае используется дата по умолчанию (DateTime.Date.MinValue).If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. Если параметр s содержит только дату и время, то используется полночь (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. Параметр style также определяет, может ли параметр s содержать начальные, внутренние или конечные символы пробела, отличные от тех, которые разрешены одной из строк формата в formats.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters other than those permitted by one of the format strings in formats.

Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime имеет значение DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal, возвращающего DateTime значение, свойство Kind которого равно DateTimeKind.Local, или с помощью флагов DateTimeStyles.AssumeUniversal и DateTimeStyles.AdjustToUniversal, которые возвращают значение Kind, свойство которого равно DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. Если параметр содержит сведения о часовом поясе, то время преобразуется в местное время, если это необходимо, а свойство Kind возвращенного объекта DateTime имеет значение DateTimeKind.Local.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. Это поведение можно изменить с помощью флага DateTimeStyles.RoundtripKind, чтобы не преобразовывать время в формате UTC в местное время и установить свойство Kind в значение DateTimeKind.Utc.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind.Utc.

Параметр formats содержит массив шаблонов, один из которых s должен точно соответствовать, если операция синтаксического анализа выполнена.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. Шаблоны в параметре formats состоят из одного или нескольких настраиваемых описателей формата в таблице строк настраиваемого формата даты и времени или одного стандартного описателя формата, который определяет предопределенный шаблон, от стандартных даты и времени. Формат таблицы строк .The patterns in the formats parameter consist of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

Если в шаблоне пользовательского формата не используются разделители даты или времени, используйте инвариантный язык и региональные параметры для параметра provider и самую широкую форму описателя настраиваемого формата.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму, "HH", а не более узкую форму "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Конкретные символы и строки даты и времени (например, названия дней недели на определенном языке), используемые в s, определяются параметром provider, как и точный формат s, если format является строкой описателя стандартного формата.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. Параметр provider может быть любым из следующих:The provider parameter can be any of the following:

  • Объект CultureInfo, представляющий язык и региональные параметры, используемые для интерпретации s.A CultureInfo object that represents the culture used to interpret s. Объект DateTimeFormatInfo, возвращенный свойством DateTimeFormat, определяет символы и форматирование в s.The DateTimeFormatInfo object returned by its DateTimeFormat property defines the symbols and formatting in s.

  • Объект DateTimeFormatInfo, определяющий формат данных даты и времени.A DateTimeFormatInfo object that defines the format of date and time data.

  • Пользовательская реализация IFormatProvider, метод GetFormat, возвращает либо объект CultureInfo, либо объект DateTimeFormatInfo, предоставляющий сведения о форматировании.A custom IFormatProvider implementation whose GetFormat method returns either the CultureInfo object or the DateTimeFormatInfo object that provides formatting information.

Если provider равно null, то используется объект CultureInfo, соответствующий текущему языку и региональным параметрам.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Параметр styles включает один или несколько элементов перечисления DateTimeStyles, которые определяют, могут ли и где пробелы, не определенные format, отображаться в s, и управлять точным поведением операции синтаксического анализа.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. В следующей таблице описано, как каждый элемент перечисления DateTimeStyles влияет на работу метода TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime).The following table describes how each member of the DateTimeStyles enumeration affects the operation of the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method.

DateTimeStyles, элементDateTimeStyles member ОписаниеDescription
AdjustToUniversal Выполняет синтаксический анализ s и при необходимости преобразует его в время в формате UTC.Parses s and, if necessary, converts it to UTC. Если s включает смещение часового пояса или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeLocal, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращенного значения DateTime в формат UTC и задает для свойства Kind значение DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Если s указывает, что он представляет время в формате UTC или если s не содержит сведений о часовом поясе, но styles включает флаг DateTimeStyles.AssumeUniversal, метод анализирует строку, не выполняет преобразование часового пояса для возвращенного значения DateTime и устанавливает свойство Kind. в DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. Во всех остальных случаях флаг не оказывает никакого влияния.In all other cases, the flag has no effect.
AllowInnerWhite Указывает, что пробелы, не определенные format, могут отображаться между любым отдельным элементом даты или времени.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Указывает, что пробелы, не определенные format, могут присутствовать в начале s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Указывает, что пробелы, не определенные format, могут присутствовать в конце s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что оно представляет местное время.Specifies that if s lacks any time zone information, it is assumed to represent a local time. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, свойство Kind возвращаемого значения DateTime устанавливается в DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Указывает, что если s не содержит сведений о часовом поясе, предполагается, что он представляет время в формате UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. Если флаг DateTimeStyles.AdjustToUniversal отсутствует, метод преобразует возвращенное значение DateTime из UTC в местное время и устанавливает для его свойства Kind значение DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault Если s содержит сведения о времени без даты, то дата возвращаемого значения устанавливается равным DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None Параметр s анализируется с использованием значений по умолчанию.The s parameter is parsed using default values. В format не допускаются пробелы, кроме тех, что есть.No white space other than that present in format is allowed. Если s не имеет компонента даты, то дата возвращаемого значения DateTime устанавливается равным 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Если s не содержит сведений о часовом поясе, свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Если сведения о часовом поясе находятся в s, время преобразуется в местное время, а свойство Kind возвращенного объекта DateTime устанавливается в DateTimeKind.Local.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в значение DateTime со свойством Kind, равным DateTimeKind.Local.For strings that contain time zone information, tries to prevent the conversion to a DateTime value with its Kind property set to DateTimeKind.Local. Этот флаг, в первую очередь, предотвращает преобразование времени в формате UTC в местное время.This flag primarily prevents the conversion of UTC times to local times.

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

В .NET Framework 4.NET Framework 4 метод TryParseExact возвращает false, если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the TryParseExact method returns false if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. В .NET Framework 3,5.NET Framework 3.5 и более ранних версиях указатель AM/PM игнорируется.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Дополнительно

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