DateTimeOffset.TryParseExact Метод

Определение

Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset.Converts the specified string representation of a date and time to its DateTimeOffset equivalent. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match a specified format exactly.

Перегрузки

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

Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования.Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified array of formats, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать одному из заданных форматов.The format of the string representation must match one of the specified formats exactly.

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

Преобразует представление даты и времени в диапазоне символов в его эквивалент DateTimeOffset, используя заданный формат, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the representation of a date and time in a character span to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. Формат отображения даты и времени должен полностью соответствовать заданному формату.The format of the date and time representation must match the specified format exactly.

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

Преобразует представление даты и времени в диапазоне символов в его эквивалент типа DateTimeOffset, используя указанные форматы, сведения о форматировании для определенного языка и региональных параметров, а также стиль.Converts the representation of a date and time in a character span to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. Формат представления даты и времени должен полностью соответствовать одному из заданных форматов.The format of the date and time representation must match one of the specified formats exactly.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match the specified format exactly.

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

Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования.Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified array of formats, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать одному из заданных форматов.The format of the string representation must match one of the specified formats exactly.

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

Параметры

input
String

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

formats
String[]

Массив, в котором задаются ожидаемые форматы input.An array that defines the expected formats of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

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

result
DateTimeOffset

После возврата из этого метода содержит эквивалент DateTimeOffset для даты и времени, заданных в параметре input, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей.When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue, if the conversion failed. Преобразование завершается неудачно, если параметр format не содержит допустимое строчное представление даты и времени или же даты и времени в требуемом формате, заданном параметром formats, или если параметр null имеет значение input.The conversion fails if the input does not contain a valid string representation of a date and time, or does not contain the date and time in the expected format defined by format, or if formats is null. Этот параметр передается неинициализированным.This parameter is passed uninitialized.

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

Boolean

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

Исключения

Параметр styles включает неопределенное значение DateTimeStyles.styles includes an undefined DateTimeStyles value.

-или--or- Тип NoCurrentDateDefault не поддерживается.NoCurrentDateDefault is not supported.

-или--or- Параметр styles содержит взаимоисключающие значения DateTimeStyles.styles includes mutually exclusive DateTimeStyles values.

Примеры

В следующем примере определяется несколько входных форматов для строкового представления даты и времени и значения смещения, а затем в метод передается строка, введенная пользователем TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) .The following example defines multiple input formats for the string representation of a date and time and offset value, and then passes the string that is entered by the user to the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) method.

TextReader conIn = Console.In;
TextWriter conOut = Console.Out;
int tries = 0;
string input = String.Empty;

string[] formats = new string[] {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz",
                                 "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz",
                                 "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz",
                                 "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz",
                                 "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz",
                                 "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz",
                                 "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz",
                                 "M/d/yy H:m zzz", "MM/d/yy H:m zzz",
                                 "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz",
                                 "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz",
                                 "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz",
                                 "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz",
                                 "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz",
                                 "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz",
                                 "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz",
                                 "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"};
IFormatProvider provider = CultureInfo.InvariantCulture.DateTimeFormat;
DateTimeOffset result;

do {
   conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),");
   conOut.Write("Then press Enter: ");
   input = conIn.ReadLine();
   conOut.WriteLine();
   if (DateTimeOffset.TryParseExact(input, formats, provider,
                                   DateTimeStyles.AllowWhiteSpaces,
                                   out result))
   {
      break;
   }
   else
   {
      Console.WriteLine("Unable to parse {0}.", input);
      tries++;
   }
} while (tries < 3);
if (tries >= 3)
   Console.WriteLine("Exiting application without parsing {0}", input);
else
   Console.WriteLine("{0} was converted to {1}", input, result.ToString());
// Some successful sample interactions with the user might appear as follows:
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/08/2007 6:54 -6:00
//
//    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/8/2007 06:54 -06:00
//
//    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
//    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
//    Then press Enter: 12/5/07 6:54 -6:00
//
//    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
 Dim conIn As TextReader = Console.In
 Dim conOut As TextWriter = Console.Out
 Dim tries As Integer = 0
 Dim input As String = String.Empty
 Dim formats() As String = {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz", _
                            "M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz", _
                            "M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz", _
                            "M/d/yy HH:m zzz", "MM/d/yy HH:m zzz", _                                 
                            "M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz", _
                            "M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz", _
                            "M/dd/yy H:m zzz", "MM/dd/yy H:m zzz", _
                            "M/d/yy H:m zzz", "MM/d/yy H:m zzz", _                               
                            "M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz", _
                            "M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz", _
                            "M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz", _
                            "M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz", _                                 
                            "M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz", _
                            "M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz", _
                            "M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz", _
                            "M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"}   
 Dim provider As IFormatProvider = CultureInfo.InvariantCulture.DateTimeFormat
 Dim result As DateTimeOffset

 Do 
    conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),")
    conOut.Write("Then press Enter: ")
    input = conIn.ReadLine()
    conOut.WriteLine() 
    If DateTimeOffset.TryParseExact(input, formats, provider, _
                                    DateTimeStyles.AllowWhiteSpaces, _
                                    result) Then
       Exit Do
    Else
       Console.WriteLine("Unable to parse {0}.", input)      
       tries += 1
    End If
 Loop While tries < 3
 If tries >= 3 Then
    Console.WriteLine("Exiting application without parsing {0}", input)
 Else
    Console.WriteLine("{0} was converted to {1}", input, result.ToString())                                                     
 End If 
 ' Some successful sample interactions with the user might appear as follows:
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/08/2007 6:54 -6:00
 '    
 '    12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00         
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/8/2007 06:54 -06:00
 '    
 '    12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
 '    
 '    Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
 '    Then press Enter: 12/5/07 6:54 -6:00
 '    
 '    12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00 

Комментарии

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)Метод анализирует строковое представление даты, совпадающей с любым из шаблонов, назначенных formats массиву.The TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) method parses the string representation of a date that matches any one of the patterns assigned to the formats array. Если input строка не соответствует ни одному из этих шаблонов с вариациями, определенными styles параметром, операция синтаксического анализа завершается ошибкой и метод возвращает значение false .If the input string does not match any one of these patterns with any variations defined by the styles parameter, the parsing operation fails and the method returns false. Помимо сравнения input с несколькими строками, содержащими описатели формата, эта перегрузка ведет себя идентично DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) методу.Aside from comparing input to multiple strings that contain format specifiers, this overload behaves identically to the DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method.

formatsПараметр — это строковый массив, элементы которого содержат либо один стандартный описатель формата, либо один или несколько описателей настраиваемого формата, определяющих возможный шаблон input .The formats parameter is a string array whose elements contain either a single standard format specifier or one or more custom format specifiers that define the possible pattern of input. Дополнительные сведения о допустимых кодах форматирования см. в разделе строки стандартных форматов даты и времени и строки настраиваемых форматов даты и времени.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Если сопоставляемый элемент в formats включает z zz zzz описатели настраиваемого формата, или, чтобы указать, что смещение должно присутствовать в input , это смещение должно включать знак отрицательного или положительного знака.If the matched element in formats includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Если знак отсутствует, операция синтаксического анализа завершается неудачей и метод возвращает значение false .If the sign is missing, the parse operation fails and the method returns false.

Важно!

Использование formats параметра этой перегрузки для указания нескольких форматов помогает сократить число незавершенных пользователей при вводе даты и времени.Using the formats parameter of this overload to specify multiple formats can help reduce the frustration many users experience when they enter dates and times. В частности, возможность определения нескольких шаблонов ввода позволяет приложению работать с представлениями даты и времени, которые могут включать или не иметь начальных нулей в месяцах, днях, часах, минутах и секундах.In particular, the ability to define multiple input patterns enables an application to handle date and time representations that can either include or lack leading zeros in months, days, hours, minutes, and seconds. В примере показана эта схема.The example provides an illustration of this.

Если сопоставляемый элемент в formats требует, чтобы он input содержал дату, но не время, полученному DateTimeOffset объекту присваивается время полуночи (0:00:00).If the matched element in formats requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Если сопоставляемый элемент в formats требует, чтобы входные данные содержали время, но не дату, полученному DateTimeOffset объекту присваивается текущая дата в локальной системе.If the matched element in formats requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Если сопоставляемый элемент в formats не требует наличия input смещения, Смещение результирующего DateTimeOffset объекта зависит от значения styles параметра.If the matched element in formats does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Если параметр styles включен AssumeLocal , то смещение местного часового пояса назначается DateTimeOffset объекту.If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Если параметр styles включен AssumeUniversal , то для объекта назначается значение времени в формате UTC или + 00:00 DateTimeOffset .If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Если не указано ни одно из значений, используется смещение местного часового пояса.If neither value is specified, the offset of the local time zone is used.

Конкретные символы и строки даты и времени, используемые в, input определяются formatProvider параметром.The particular date and time symbols and strings used in input are defined by the formatProvider parameter. Это справедливо и для точного шаблона, input если соответствующий элемент formats является строкой описателя стандартного формата.The same is true for the precise pattern of input if the matching element of formats is a standard format specifier string. formatProviderПараметр может быть одним из следующих:The formatProvider parameter can be either of the following:

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

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

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

stylesПараметр определяет, разрешено ли использование пробелов во входной строке, указывает способ синтаксического анализа строк без явных компонентов смещения и поддерживает преобразование в формате UTC в рамках операции анализа.The styles parameter defines whether white space is permitted in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Поддерживаются все члены DateTimeStyles перечисления, кроме NoCurrentDateDefault .All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.The following table lists the effect of each supported member.

ЧленDateTimeStylesDateTimeStyles member ПоведениеBehavior
AdjustToUniversal Выполняет синтаксический анализ input и, при необходимости, преобразует его в время в формате UTC.Parses input and, if necessary, converts it to UTC. Он эквивалентен анализу строки и последующему вызову DateTimeOffset.ToUniversalTime метода возвращенного DateTimeOffset объекта.It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Если сопоставленный элемент в formats не требует, чтобы он input содержал значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение местного часового пояса.If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Это значение по умолчанию.This is the default value.
AssumeUniversal Если сопоставленный элемент в formats не требует, чтобы он input содержал значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение в формате UTC (+ 00:00).If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Допускает input Включение внутреннего пробела, не указанного элементами в formats .Allows input to include inner white space not specified by the elements in formats. Дополнительные пробелы могут появляться между компонентами даты и времени и отдельными компонентами (за исключением смещения) и пропускаются при синтаксическом анализе строки.Extra white space can appear between date and time components and within individual components (except for the offset) and is ignored when parsing the string.
AllowLeadingWhite Позволяет input включать начальные пробелы, не указанные элементами в formats .Allows input to include leading spaces not specified by the elements in formats. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowTrailingWhite Позволяет input включать конечные пробелы, не указанные элементами в formats .Allows input to include trailing spaces not specified by the elements in formats. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowWhiteSpaces Позволяет input включать начальные, конечные и внутренние пробелы, не указанные элементами в formats .Allows input to include leading, trailing, and inner spaces not specified by the elements in formats. Все дополнительные символы пробела, не указанные в сопоставленном элементе formats , игнорируются при анализе строки.All extra white-space characters not specified in the matched element in formats are ignored when parsing the string.
None Указывает, что в не допускаются дополнительные пробелы input .Indicates that additional white space is not permitted in input. Для успешного сопоставления пробелы должны располагаться в точности так, как указано в определенном элементе formats .White space must appear exactly as specified in a particular element in formats for a successful match to occur. Это поведение по умолчанию.This is the default behavior.
RoundtripKind Не действует, поскольку DateTimeOffset структура не включает Kind свойство.Has no effect because the DateTimeOffset structure does not include a Kind property.

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

В .NET Framework 4.NET Framework 4 TryParseExact метод возвращает значение, false если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the TryParseExact 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(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

Преобразует представление даты и времени в диапазоне символов в его эквивалент DateTimeOffset, используя заданный формат, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the representation of a date and time in a character span to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. Формат отображения даты и времени должен полностью соответствовать заданному формату.The format of the date and time representation must match the specified format exactly.

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

Параметры

input
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемые дату и время.A span containing the characters that represent a date and time to convert.

format
ReadOnlySpan<Char>

Описатель формата, задающий требуемый формат input.A format specifier that defines the required format of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

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

result
DateTimeOffset

После возврата из этого метода содержит эквивалент DateTimeOffset для даты и времени, заданных в параметре input, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей.When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue if the conversion failed. Преобразование не будет выполнено, еслиThe conversion fails if the

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

Boolean

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

Исключения

Параметр styles включает неопределенное значение DateTimeStyles.styles includes an undefined DateTimeStyles value.
-или- Тип NoCurrentDateDefault не поддерживается.-or- NoCurrentDateDefault is not supported.
-или- Параметр styles содержит взаимоисключающие значения DateTimeStyles.-or- styles includes mutually exclusive DateTimeStyles values.

Комментарии

Эта перегрузка аналогична DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) методу, за исключением того, что этот метод не создает исключение, если преобразование завершается неудачей.This overload is like the DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) method, except that this method does not throw an exception if the conversion fails. Он анализирует представление даты и времени, которое должно точно соответствовать шаблону, заданному format параметром.It parses the representation of a date and time that must exactly match the pattern specified by the format parameter. Если не input соответствует этому шаблону, а некоторые возможные варианты в пробелах styles , определенных параметром, операция синтаксического анализа завершается ошибкой и метод возвращает значение false .If input does not match this pattern, with some possible variations in white space defined by the styles parameter, the parsing operation fails and the method returns false.

formatПараметр — это диапазон символов, который содержит либо один стандартный описатель формата, либо один или несколько настраиваемых описателей формата, определяющих требуемый шаблон input .The format parameter is a character span that contains either a single standard format specifier or one or more custom format specifiers that define the required pattern of input. Дополнительные сведения о допустимых кодах форматирования см. в разделе строки стандартных форматов даты и времени и строки настраиваемых форматов даты и времени.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Если format содержит z zz zzz описатели настраиваемого формата, или, чтобы указать, что смещение должно присутствовать в input , это смещение должно включать знак отрицательного или положительного знака.If format includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Если знак отсутствует, операция синтаксического анализа завершается неудачей и метод возвращает значение false .If the sign is missing, the parsing operation fails and the method returns false.

Если format требуется, чтобы input параметр содержал дату, но не время, полученному DateTimeOffset объекту присваивается время полуночи (0:00:00).If format requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Если format требуется, чтобы input параметр содержал время, но не дату, полученному DateTimeOffset объекту назначается текущая дата в локальной системе.If format requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Если не format требуется, input содержащую смещение, Смещение результирующего DateTimeOffset объекта зависит от значения styles параметра.If format does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Если параметр styles включен AssumeLocal , то смещение местного часового пояса назначается DateTimeOffset объекту.If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Если параметр styles включен AssumeUniversal , то для объекта назначается значение времени в формате UTC или + 00:00 DateTimeOffset .If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Если не указано ни одно из значений, используется смещение местного часового пояса.If neither value is specified, the offset of the local time zone is used.

Конкретные символы и строки даты и времени, используемые в, input определяются formatProvider параметром.The particular date and time symbols and strings used in input are defined by the formatProvider parameter. Это справедливо и для точного шаблона, input Если format является строкой описателя стандартного формата.The same is true for the precise pattern of input if format is a standard format specifier string. formatProviderПараметр может быть одним из следующих:The formatProvider parameter can be either of the following:

  • CultureInfoОбъект, представляющий язык и региональные параметры, основанные на input интерпретации.A CultureInfo object that represents the culture based on which input is interpreted. DateTimeFormatInfoОбъект, возвращаемый CultureInfo.DateTimeFormat свойством, определяет символы и стандартные форматы, разрешенные в input .The DateTimeFormatInfo object returned by the CultureInfo.DateTimeFormat property defines the symbols and standard formats allowed in input.

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

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

stylesПараметр определяет, разрешено ли использование пробелов во входной строке, указывает способ синтаксического анализа строк без явных компонентов смещения и поддерживает преобразование в формате UTC в рамках операции анализа.The styles parameter defines whether white space is allowed in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Поддерживаются все члены DateTimeStyles перечисления, кроме NoCurrentDateDefault .All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.The following table lists the effect of each supported member.

ЧленDateTimeStylesDateTimeStyles member ПоведениеBehavior
AdjustToUniversal Выполняет синтаксический анализ input и, при необходимости, преобразует его в время в формате UTC.Parses input and, if necessary, converts it to UTC. Он эквивалентен анализу представления даты и времени, а затем вызову DateTimeOffset.ToUniversalTime метода возвращенного DateTimeOffset объекта.It is equivalent to parsing a date and time representation, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Если не format требуется, input содержащую значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение местного часового пояса.If format does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Это поведение по умолчанию.This is the default behavior.
AssumeUniversal Если не format требуется, input содержащую значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение в формате UTC (+ 00:00).If format does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Позволяет input включить внутреннее пустое пространство, не указанное в формате.Allows input to include inner white space not specified by format. Дополнительные пробелы могут отображаться между компонентами даты и времени и отдельными компонентами, отличными от смещения, и игнорируются при анализе строки.Extra white space can appear between date and time components and within individual components, other than the offset, and is ignored when parsing the string.
AllowLeadingWhite Позволяет input включать начальные пробелы, не указанные в параметре format .Allows input to include leading spaces not specified by format. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowTrailingWhite Позволяет input включать конечные пробелы, не указанные в параметре format .Allows input to include trailing spaces not specified by format. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowWhiteSpaces Позволяет input включать начальные, конечные и внутренние пробелы, не указанные в format .Allows input to include leading, trailing, and inner spaces not specified by format. Все лишние пробелы, не указанные в format , игнорируются при анализе строки.All extra white-space characters not specified in format are ignored when parsing the string.
None Указывает, что в не допускаются дополнительные пробелы input .Indicates that additional white space is not permitted in input. Пробелы должны указываться в точности так, как указано в format .White space must appear exactly as specified in format. Это поведение по умолчанию.This is the default behavior.
RoundtripKind Не действует, поскольку структура не DateTimeOffset включает Kind свойство.Has no effect, because the DateTimeOffset structure does not include a Kind property.

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

Преобразует представление даты и времени в диапазоне символов в его эквивалент типа DateTimeOffset, используя указанные форматы, сведения о форматировании для определенного языка и региональных параметров, а также стиль.Converts the representation of a date and time in a character span to its DateTimeOffset equivalent using the specified formats, culture-specific format information, and style. Формат представления даты и времени должен полностью соответствовать одному из заданных форматов.The format of the date and time representation must match one of the specified formats exactly.

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

Параметры

input
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемые дату и время.A span containing the characters that represent a date and time to convert.

formats
String[]

Массив стандартных или пользовательских строк формата, которые определяют допустимые форматы параметра input.A array of standard or custom format strings that define the acceptable formats of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

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

result
DateTimeOffset

После возврата из этого метода содержит эквивалент DateTimeOffset для даты и времени, заданных в параметре input, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей.When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue if the conversion failed. Преобразование не будет выполнено, еслиThe conversion fails if the

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

Boolean

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

Исключения

Параметр styles включает неопределенное значение DateTimeStyles.styles includes an undefined DateTimeStyles value.
-или- Тип NoCurrentDateDefault не поддерживается.-or- NoCurrentDateDefault is not supported.
-или- Параметр styles содержит взаимоисключающие значения DateTimeStyles.-or- styles includes mutually exclusive DateTimeStyles values.

Комментарии

Этот метод анализирует строковое представление даты, совпадающей с любым из шаблонов, назначенных formats массиву.This method parses the string representation of a date that matches any one of the patterns assigned to the formats array. Если не input соответствует ни одному из этих шаблонов с вариациями, определенными styles параметром, операция синтаксического анализа завершается ошибкой и метод возвращает значение false .If input does not match any one of these patterns with any variations defined by the styles parameter, the parsing operation fails and the method returns false. Помимо сравнения input с несколькими строками, содержащими описатели формата, эта перегрузка ведет себя идентично DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) методу.Aside from comparing input to multiple strings that contain format specifiers, this overload behaves identically to the DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) method.

formatsПараметр — это строковый массив, элементы которого содержат либо один стандартный описатель формата, либо один или несколько описателей настраиваемого формата, определяющих возможный шаблон input .The formats parameter is a string array whose elements contain either a single standard format specifier or one or more custom format specifiers that define the possible pattern of input. Дополнительные сведения о допустимых кодах форматирования см. в разделе строки стандартных форматов даты и времени и строки настраиваемых форматов даты и времени.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Если сопоставляемый элемент в formats включает z zz zzz описатели настраиваемого формата, или, чтобы указать, что смещение должно присутствовать в input , это смещение должно включать знак отрицательного или положительного знака.If the matched element in formats includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Если знак отсутствует, операция синтаксического анализа завершается неудачей и метод возвращает значение false .If the sign is missing, the parse operation fails and the method returns false.

Важно!

Использование formats параметра этой перегрузки для указания нескольких форматов помогает сократить число незавершенных пользователей при вводе даты и времени.Using the formats parameter of this overload to specify multiple formats can help reduce the frustration many users experience when they enter dates and times. В частности, возможность определения нескольких шаблонов ввода позволяет приложению работать с представлениями даты и времени, которые могут включать или не иметь начальных нулей в месяцах, днях, часах, минутах и секундах.In particular, the ability to define multiple input patterns enables an application to handle date and time representations that can either include or lack leading zeros in months, days, hours, minutes, and seconds. В примере показана эта схема.The example provides an illustration of this.

Если сопоставляемый элемент в formats требует, чтобы он input содержал дату, но не время, полученному DateTimeOffset объекту присваивается время полуночи (0:00:00).If the matched element in formats requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Если сопоставляемый элемент в formats требует, чтобы входные данные содержали время, но не дату, полученному DateTimeOffset объекту присваивается текущая дата в локальной системе.If the matched element in formats requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Если сопоставляемый элемент в formats не требует наличия input смещения, Смещение результирующего DateTimeOffset объекта зависит от значения styles параметра.If the matched element in formats does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Если параметр styles включен DateTimeStyles.AssumeLocal , то смещение местного часового пояса назначается DateTimeOffset объекту.If styles includes DateTimeStyles.AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Если параметр styles включен DateTimeStyles.AssumeUniversal , то для объекта назначается значение времени в формате UTC или + 00:00 DateTimeOffset .If styles includes DateTimeStyles.AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Если не указано ни одно из значений, используется смещение местного часового пояса.If neither value is specified, the offset of the local time zone is used.

Конкретные символы даты и времени, используемые в, input определяются formatProvider параметром.The particular date and time symbols used in input are defined by the formatProvider parameter. Это справедливо и для точного шаблона, input если соответствующий элемент formats является строкой описателя стандартного формата.The same is true for the precise pattern of input if the matching element of formats is a standard format specifier string. formatProviderПараметр может быть одним из следующих:The formatProvider parameter can be either of the following:

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

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

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

stylesПараметр определяет, разрешено ли использование пробелов во входной строке, указывает способ синтаксического анализа строк без явных компонентов смещения и поддерживает преобразование в формате UTC в рамках операции анализа.The styles parameter defines whether white space is permitted in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Поддерживаются все члены DateTimeStyles перечисления, кроме NoCurrentDateDefault .All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.The following table lists the effect of each supported member.

ЧленDateTimeStylesDateTimeStyles member ПоведениеBehavior
AdjustToUniversal Выполняет синтаксический анализ input и, при необходимости, преобразует его в время в формате UTC.Parses input and, if necessary, converts it to UTC. Он эквивалентен анализу строки и последующему вызову DateTimeOffset.ToUniversalTime метода возвращенного DateTimeOffset объекта.It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Если сопоставленный элемент в formats не требует, чтобы он input содержал значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение местного часового пояса.If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Это значение по умолчанию.This is the default value.
AssumeUniversal Если сопоставленный элемент в formats не требует, чтобы он input содержал значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение в формате UTC (+ 00:00).If the matched element in formats does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Допускает input Включение внутреннего пробела, не указанного элементами в formats .Allows input to include inner white space not specified by the elements in formats. Дополнительные пробелы могут появляться между компонентами даты и времени и отдельными компонентами (за исключением смещения) и пропускаются при синтаксическом анализе строки.Extra white space can appear between date and time components and within individual components (except for the offset) and is ignored when parsing the string.
AllowLeadingWhite Позволяет input включать начальные пробелы, не указанные элементами в formats .Allows input to include leading spaces not specified by the elements in formats. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowTrailingWhite Позволяет input включать конечные пробелы, не указанные элементами в formats .Allows input to include trailing spaces not specified by the elements in formats. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowWhiteSpaces Позволяет input включать начальные, конечные и внутренние пробелы, не указанные элементами в formats .Allows input to include leading, trailing, and inner spaces not specified by the elements in formats. Все дополнительные символы пробела, не указанные в сопоставленном элементе formats , игнорируются при анализе строки.All extra white-space characters not specified in the matched element in formats are ignored when parsing the string.
None Указывает, что в не допускаются дополнительные пробелы input .Indicates that additional white space is not permitted in input. Для успешного сопоставления пробелы должны располагаться в точности так, как указано в определенном элементе formats .White space must appear exactly as specified in a particular element in formats for a successful match to occur. Это поведение по умолчанию.This is the default behavior.
RoundtripKind Не действует, поскольку DateTimeOffset структура не включает Kind свойство.Has no effect because the DateTimeOffset structure does not include a Kind property.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль.Converts the specified string representation of a date and time to its DateTimeOffset equivalent using the specified format, culture-specific format information, and style. Формат строкового представления должен полностью соответствовать заданному формату.The format of the string representation must match the specified format exactly.

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

Параметры

input
String

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

format
String

Описатель формата, задающий требуемый формат input.A format specifier that defines the required format of input.

formatProvider
IFormatProvider

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

styles
DateTimeStyles

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

result
DateTimeOffset

После возврата из этого метода содержит эквивалент DateTimeOffset для даты и времени, заданных в параметре input, если преобразование прошло успешно, или значение MinValue, если преобразование завершилось неудачей.When the method returns, contains the DateTimeOffset equivalent to the date and time of input, if the conversion succeeded, or MinValue, if the conversion failed. Преобразование завершается неудачно, если параметр input имеет значение null или не содержит допустимое строчное представление даты и времени в требуемом формате, заданном параметрами format и provider.The conversion fails if the input parameter is null, or does not contain a valid string representation of a date and time in the expected format defined by format and provider. Этот параметр передается неинициализированным.This parameter is passed uninitialized.

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

Boolean

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

Исключения

Параметр styles включает неопределенное значение DateTimeStyles.styles includes an undefined DateTimeStyles value.

-или--or- Тип NoCurrentDateDefault не поддерживается.NoCurrentDateDefault is not supported.

-или--or- Параметр styles содержит взаимоисключающие значения DateTimeStyles.styles includes mutually exclusive DateTimeStyles values.

Примеры

В следующем примере используется TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) метод со стандартными и настраиваемыми описателями формата, инвариантным языком и различными DateTimeStyles значениями для анализа нескольких строк даты и времени.The following example uses the TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) method with standard and custom format specifiers, the invariant culture, and various DateTimeStyles values to parse several date and time strings.

string dateString, format;
DateTimeOffset result;
IFormatProvider provider = CultureInfo.InvariantCulture;

// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AssumeUniversal,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
dateString = " 06/15/2008";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowTrailingWhite,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00";
format = "MM/dd/yyyy H:mm zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                 DateTimeStyles.AllowWhiteSpaces,
                                 out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);

// Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00";
format = "MM/dd/yyyy H:mm:ss zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
                                DateTimeStyles.AllowWhiteSpaces |
                                DateTimeStyles.AdjustToUniversal,
                                out result))
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
   Console.WriteLine("'{0}' is not in the correct format.", dateString);
// The example displays the following output:
//    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
//    ' 06/15/2008' is not in the correct format.
//    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
//    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
Dim dateString, format As String  
Dim result As DateTimeOffset
Dim provider As CultureInfo = CultureInfo.InvariantCulture

' Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008"
format = "d"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                   DateTimeStyles.AssumeUniversal, _
                                   result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date-only value with leading white space.
' Should return False because only trailing white space is  
' specified in method call.
dateString = " 06/15/2008"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowTrailingWhite, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date and time value, and allow all white space.
dateString = " 06/15/   2008  15:15    -05:00"
format = "MM/dd/yyyy H:mm zzz"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 

' Parse date and time and convert to UTC.
dateString = "  06/15/2008 15:15:30 -05:00"   
format = "MM/dd/yyyy H:mm:ss zzz"       
If DateTimeOffset.TryParseExact(dateString, format, provider, _
                                DateTimeStyles.AllowWhiteSpaces Or _
                                DateTimeStyles.AdjustToUniversal, _
                                result) Then
   Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
   Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If 
' The example displays the following output:
'    '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
'    ' 06/15/2008' is not in the correct format.
'    ' 06/15/   2008  15:15    -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
'    '  06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.

В следующем примере используются различные DateTimeStyles значения для синтаксического анализа массива строк, которые должны соответствовать стандарту ISO 8601.The following example uses a variety of DateTimeStyles values to parse an array of strings that are expected to conform to ISO 8601. Как видно из выходных данных примера, строки, находящиеся в правильном формате, не проходят синтаксический анализ, если:As the output from the example shows, strings that are in the proper format fail to parse if:

  • они содержат пробелы и соответствующий DateTimeStyles флаг (например, DateTimeStyles.AllowWhiteSpaces не был предоставлен в вызове метода.they contain white space, and an appropriate DateTimeStyles flag (such as DateTimeStyles.AllowWhiteSpaces has not been supplied in the method call.

  • они содержат элементы даты и времени, которые выходят за пределы допустимого диапазона.they contain date and time elements that are out of range.

Предполагается, что строки, не указывающие смещение в формате UTC, имеют смещение местного часового пояса (в данном случае-07:00, которое отражает смещение часового пояса по тихоокеанскому времени), если только в DateTimeStyles.AssumeUniversal вызове метода не указан флаг.Strings that do not specify a UTC offset are assumed to have the offset of the local time zone (in this case, -07:00, which reflects the offset of the Pacific Daylight Time zone) unless the DateTimeStyles.AssumeUniversal flag is supplied in the method call. В этом случае предполагается, что они имеют универсальное координированное время.In that case, they are assumed to be Universal Coordinated Time.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "2018-08-18T12:45:16.0000000Z",
                               "2018/08/18T12:45:16.0000000Z",
                               "2018-18-08T12:45:16.0000000Z",
                               "2018-08-18T12:45:16.0000000",                               
                               " 2018-08-18T12:45:16.0000000Z ",
                               "2018-08-18T12:45:16.0000000+02:00",
                               "2018-08-18T12:45:16.0000000-07:00" }; 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal);
      Console.WriteLine("\n-----\n");
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal);   }

   private static void ParseWithISO8601(string[] dateStrings, DateTimeStyles styles)
   {   
      Console.WriteLine($"Parsing with {styles}:");
      DateTimeOffset date;
      foreach (var dateString in dateStrings)
      {
         if (DateTimeOffset.TryParseExact(dateString, "O", null, styles, out date))
         {
            Console.WriteLine($"   {dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
         }
         else
         {
            Console.WriteLine($"   Unable to convert '{dateString}'");
         }   
      } 
   }
}
// The example displays the following output:
//      Parsing with None:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AllowWhiteSpaces:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AdjustToUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
//
//      -----
//
//      Parsing with AssumeLocal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
//
//      -----
//
//      Parsing with AssumeUniversal:
//         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
//         Unable to convert '2018/08/18T12:45:16.0000000Z'
//         Unable to convert '2018-18-08T12:45:16.0000000Z'
//         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
//         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
//         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
//         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateStrings() = { "2018-08-18T12:45:16.0000000Z",
                            "2018/08/18T12:45:16.0000000Z",
                            "2018-18-08T12:45:16.0000000Z",
                            "2018-08-18T12:45:16.0000000",                               
                            " 2018-08-18T12:45:16.0000000Z ",
                            "2018-08-18T12:45:16.0000000+02:00",
                            "2018-08-18T12:45:16.0000000-07:00" } 
      
      ParseWithISO8601(dateStrings, DateTimeStyles.None)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal)
      Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
      ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal)   
   End Sub

   Private Sub ParseWithISO8601(dateStrings() As String, styles As DateTimeStyles)
      Console.WriteLine($"Parsing with {styles}:")
      Dim dat As DateTimeOffset
      For Each dateStr In dateStrings
         If DateTimeOffset.TryParseExact(dateStr, "O", Nothing, styles, dat) Then
            Console.WriteLine($"   {dateStr,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
         Else
            Console.WriteLine($"   Unable to convert '{dateStr}'")
         End If   
      Next 
   End Sub
End Module
' The example displays the following output:
'      Parsing with None:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AllowWhiteSpaces:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'          2018-08-18T12:45:16.0000000Z       --> 2018-08-18 12:45:16 +00:00
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AdjustToUniversal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 19:45:16 +00:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 10:45:16 +00:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 19:45:16 +00:00
'
'      -----
'
'      Parsing with AssumeLocal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 -07:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00
'
'      -----
'
'      Parsing with AssumeUniversal:
'         2018-08-18T12:45:16.0000000Z        --> 2018-08-18 12:45:16 +00:00
'         Unable to convert '2018/08/18T12:45:16.0000000Z'
'         Unable to convert '2018-18-08T12:45:16.0000000Z'
'         2018-08-18T12:45:16.0000000         --> 2018-08-18 12:45:16 +00:00
'         Unable to convert ' 2018-08-18T12:45:16.0000000Z '
'         2018-08-18T12:45:16.0000000+02:00   --> 2018-08-18 12:45:16 +02:00
'         2018-08-18T12:45:16.0000000-07:00   --> 2018-08-18 12:45:16 -07:00

Комментарии

Эта перегрузка TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) метода аналогична DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) методу, за исключением того, что этот метод не создает исключение, если преобразование завершается неудачей.This overload of the TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) method is like the DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) method, except that this method does not throw an exception if the conversion fails. Он анализирует строковое представление даты и времени, которое должно точно соответствовать шаблону, заданному format параметром.It parses the string representation of a date and time that must exactly match the pattern specified by the format parameter. Если input строка не соответствует этому шаблону с некоторыми возможными вариациями в пробелах, определенными styles параметром, операция синтаксического анализа завершается ошибкой и метод возвращает значение false .If the input string does not match this pattern, with some possible variations in white space defined by the styles parameter, the parsing operation fails and the method returns false.

formatПараметр представляет собой строку, содержащую либо один стандартный описатель формата, либо один или несколько настраиваемых описателей формата, определяющих требуемый шаблон input .The format parameter is a string that contains either a single standard format specifier or one or more custom format specifiers that define the required pattern of input. Дополнительные сведения о допустимых кодах форматирования см. в разделе строки стандартных форматов даты и времени и строки настраиваемых форматов даты и времени.For details about valid formatting codes, see Standard Date and Time Format Strings and Custom Date and Time Format Strings. Если format содержит z zz zzz описатели настраиваемого формата, или, чтобы указать, что смещение должно присутствовать в input , это смещение должно включать знак отрицательного или положительного знака.If format includes the z, zz, or zzz custom format specifiers to indicate that an offset must be present in input, that offset must include either a negative sign or a positive sign. Если знак отсутствует, операция синтаксического анализа завершается неудачей и метод возвращает значение false .If the sign is missing, the parsing operation fails and the method returns false.

Если format требуется, чтобы input параметр содержал дату, но не время, полученному DateTimeOffset объекту присваивается время полуночи (0:00:00).If format requires that input contain a date but not a time, the resulting DateTimeOffset object is assigned a time of midnight (0:00:00). Если format требуется, чтобы input параметр содержал время, но не дату, полученному DateTimeOffset объекту назначается текущая дата в локальной системе.If format requires that input contain a time but not a date, the resulting DateTimeOffset object is assigned the current date on the local system. Если не format требуется, input содержащую смещение, Смещение результирующего DateTimeOffset объекта зависит от значения styles параметра.If format does not require that input contain an offset, the offset of the resulting DateTimeOffset object depends on the value of the styles parameter. Если параметр styles включен AssumeLocal , то смещение местного часового пояса назначается DateTimeOffset объекту.If styles includes AssumeLocal, the offset of the local time zone is assigned to the DateTimeOffset object. Если параметр styles включен AssumeUniversal , то для объекта назначается значение времени в формате UTC или + 00:00 DateTimeOffset .If styles includes AssumeUniversal, the Coordinated Universal Time (UTC) offset, or +00:00, is assigned to the DateTimeOffset object. Если не указано ни одно из значений, используется смещение местного часового пояса.If neither value is specified, the offset of the local time zone is used.

Конкретные символы и строки даты и времени, используемые в, input определяются formatProvider параметром.The particular date and time symbols and strings used in input are defined by the formatProvider parameter. Это справедливо и для точного шаблона, input Если format является строкой описателя стандартного формата.The same is true for the precise pattern of input if format is a standard format specifier string. formatProviderПараметр может быть одним из следующих:The formatProvider parameter can be either of the following:

  • CultureInfoОбъект, представляющий язык и региональные параметры, основанные на input интерпретации.A CultureInfo object that represents the culture based on which input is interpreted. DateTimeFormatInfoОбъект, возвращаемый CultureInfo.DateTimeFormat свойством, определяет символы и стандартные форматы, разрешенные в input .The DateTimeFormatInfo object returned by the CultureInfo.DateTimeFormat property defines the symbols and standard formats allowed in input.

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

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

stylesПараметр определяет, разрешено ли использование пробелов во входной строке, указывает способ синтаксического анализа строк без явных компонентов смещения и поддерживает преобразование в формате UTC в рамках операции анализа.The styles parameter defines whether white space is allowed in the input string, indicates how strings without an explicit offset component are parsed, and supports UTC conversion as part of the parsing operation. Поддерживаются все члены DateTimeStyles перечисления, кроме NoCurrentDateDefault .All members of the DateTimeStyles enumeration are supported except NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.The following table lists the effect of each supported member.

ЧленDateTimeStylesDateTimeStyles member ПоведениеBehavior
AdjustToUniversal Выполняет синтаксический анализ input и, при необходимости, преобразует его в время в формате UTC.Parses input and, if necessary, converts it to UTC. Он эквивалентен анализу строки и последующему вызову DateTimeOffset.ToUniversalTime метода возвращенного DateTimeOffset объекта.It is equivalent to parsing a string, and then calling the DateTimeOffset.ToUniversalTime method of the returned DateTimeOffset object.
AssumeLocal Если не format требуется, input содержащую значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение местного часового пояса.If format does not require that input contain an offset value, the returned DateTimeOffset object is given the offset of the local time zone. Это поведение по умолчанию.This is the default behavior.
AssumeUniversal Если не format требуется, input содержащую значение смещения, возвращаемому DateTimeOffset объекту присваивается смещение в формате UTC (+ 00:00).If format does not require that input contain an offset value, the returned DateTimeOffset object is given the UTC offset (+00:00).
AllowInnerWhite Позволяет input включить внутреннее пустое пространство, не указанное в формате.Allows input to include inner white space not specified by format. Дополнительные пробелы могут отображаться между компонентами даты и времени и отдельными компонентами, отличными от смещения, и игнорируются при анализе строки.Extra white space can appear between date and time components and within individual components, other than the offset, and is ignored when parsing the string.
AllowLeadingWhite Позволяет input включать начальные пробелы, не указанные в параметре format .Allows input to include leading spaces not specified by format. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowTrailingWhite Позволяет input включать конечные пробелы, не указанные в параметре format .Allows input to include trailing spaces not specified by format. При синтаксическом анализе строки они игнорируются.These are ignored when parsing the string.
AllowWhiteSpaces Позволяет input включать начальные, конечные и внутренние пробелы, не указанные в format .Allows input to include leading, trailing, and inner spaces not specified by format. Все лишние пробелы, не указанные в format , игнорируются при анализе строки.All extra white-space characters not specified in format are ignored when parsing the string.
None Указывает, что в не допускаются дополнительные пробелы input .Indicates that additional white space is not permitted in input. Пробелы должны указываться в точности так, как указано в format .White space must appear exactly as specified in format. Это поведение по умолчанию.This is the default behavior.
RoundtripKind Не действует, поскольку структура не DateTimeOffset включает Kind свойство.Has no effect, because the DateTimeOffset structure does not include a Kind property.

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

В .NET Framework 4.NET Framework 4 TryParseExact метод возвращает значение, false если анализируемая строка содержит компонент часа и указатель AM/PM, который не является соглашением.In the .NET Framework 4.NET Framework 4, the TryParseExact 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.

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

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