DateTime.TryParseExact Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTime. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.
Перегрузки
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) |
Преобразует заданное представление диапазона даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование. |
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) |
Преобразовывает указанный диапазон символов даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования. |
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) |
Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование. |
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) |
Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование. |
Комментарии
Важно!
Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва. Изменение эры затрагивает все приложения, использующие эти календари. Дополнительные сведения и определение того, затронуты ли ваши приложения, см. в статье Обработка новой эры в японском календаре в .NET. Сведения о тестировании приложений в системах Windows для обеспечения их готовности к изменению эпохи см. в статье Подготовка приложения к изменению японской эры. Сведения о функциях в .NET, поддерживающих календари с несколькими эрами, а также рекомендации по работе с календарями, поддерживающими несколько эпох, см. в статье Работа с эрами.
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
Преобразует заданное представление диапазона даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.
public:
static bool TryParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Параметры
- s
- ReadOnlySpan<Char>
Диапазон, содержащий символы, которые представляют преобразуемые дату и время.
- format
- ReadOnlySpan<Char>
Необходимый формат s
.
- provider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра s
в зависимости от языка и региональных параметров.
- style
- DateTimeStyles
Побитовая комбинация одного или нескольких значений перечисления, которые указывают на разрешенный формат параметра s
.
- result
- DateTime
При возврате этим методом содержит DateTime значение, эквивалентное дате и времени, содержащимся в s
, если преобразование выполнено успешно, или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если в значением параметра s
или format
является null
либо пустая строка, или не является дата и время, соответствующие шаблону, заданному в параметре format
. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение true
, если параметр s
успешно преобразован; в противном случае — значение false
.
Применяется к
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
Преобразовывает указанный диапазон символов даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.
public:
static bool TryParseExact(ReadOnlySpan<char> s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Параметры
- s
- ReadOnlySpan<Char>
Диапазон, содержащий строку для анализа.
- formats
- String[]
Массив разрешенных форматов s
.
- provider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра s
в зависимости от языка и региональных параметров.
- style
- DateTimeStyles
Побитовая комбинация значений перечисления, которая определяет, как интерпретировать проанализированную дату по отношению к текущему часовому поясу или текущей дате. Обычно указывается значение None.
- result
- DateTime
При возврате этим методом содержит DateTime значение, эквивалентное дате и времени, содержащимся в s
, если преобразование выполнено успешно, или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если значение параметра s
равно null
, Empty или в нем не содержится допустимое строковое представление даты и времени. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение true
, если параметр s
успешно преобразован; в противном случае — значение false
.
Применяется к
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.
public:
static bool TryParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string? format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Параметры
- s
- String
Строка, содержащая дату и время, которые нужно преобразовать.
- format
- String
Необходимый формат s
.
- provider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра s
в зависимости от языка и региональных параметров.
- style
- DateTimeStyles
Побитовая комбинация одного или нескольких значений перечисления, которые указывают на разрешенный формат параметра s
.
- result
- DateTime
При возврате этим методом содержит DateTime значение, эквивалентное дате и времени, содержащимся в s
, если преобразование выполнено успешно, или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если в значением параметра s
или format
является null
либо пустая строка, или не является дата и время, соответствующие шаблону, заданному в параметре format
. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение true
, если параметр s
успешно преобразован; в противном случае — значение false
.
Исключения
styles
не является допустимым значением DateTimeStyles.
-или-
styles
содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).
Примеры
В следующем примере демонстрируется DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метод. Обратите внимание, что строка "01.05.2009 8:30" не может быть успешно проанализирована, если styles
параметр равен, так как в параметре не разрешены format
пробелы DateTimeStyles.None в начале. Кроме того, строка "01.05.2009 09:00" не может быть успешно проанализирована со значением format
"ММ/дд/ггггч:мм", так как строка даты не предшествует номеру месяца с нулем в начале, как format
требуется.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
// Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM";
if (DateTime.TryParseExact(dateString, "g", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "g", enUS,
DateTimeStyles.AllowLeadingWhite, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Use custom formats with M and MM.
dateString = "5/01/2009 09:00";
if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00";
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.AdjustToUniversal, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z";
if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.RoundtripKind, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
}
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
open System
open System.Globalization
[<EntryPoint>]
let main _ =
let enUS = CultureInfo "en-US"
// Parse date with no style flags.
let dateString = " 5/01/2009 8:30 AM"
match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Use custom formats with M and MM.
let dateString = "5/01/2009 09:00"
match DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string with time zone information.
let dateString = "05/01/2009 01:30:42 PM -05:00"
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string representing UTC.
let dateString = "2008-06-11T16:11:20.0904778Z"
match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
0
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim enUS As New CultureInfo("en-US")
Dim dateString As String
Dim dateValue As Date
' Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM"
If Date.TryParseExact(dateString, "g", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "g", enUS, _
DateTimeStyles.AllowLeadingWhite, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Use custom formats with M and MM.
dateString = "5/01/2009 09:00"
If Date.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00"
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.AdjustToUniversal, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z"
If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.RoundtripKind, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
End Sub
End Module
' The example displays the following output:
' ' 5/01/2009 8:30 AM' is not in an acceptable format.
' Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
' Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
' '5/01/2009 09:00' is not in an acceptable format.
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Комментарии
Метод DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) анализирует строковое представление даты, которое должно быть в формате, определенном параметром format
. Он аналогичен методу DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) , за исключением того, что TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метод не создает исключение в случае сбоя преобразования.
Параметр s
содержит дату и время для анализа и должен иметь формат, определенный параметром format
. Если элементы даты, времени и часового пояса присутствуют в s
, они также должны отображаться в порядке, определенном параметром format
. Если format
определяет дату без элемента time и операция синтаксического анализа завершается успешно, то результирующее DateTime значение имеет время полуночи (00:00:00). Если format
определяет время без элемента date и операция синтаксического анализа завершается успешно, результирующее DateTime значение по умолчанию имеет дату DateTime.Now.Date
или имеет дату DateTime.MinValue.Date
, если styles
включает DateTimeStyles.NoCurrentDateDefault флаг . Параметр style
определяет, может ли параметр содержать начальные s
, внутренние или конечные пробелы.
Если s
не содержит сведений о часовом поясе Kind , свойство возвращаемого DateTime объекта имеет значение DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal , который возвращает DateTime значение, свойство которого Kind равно DateTimeKind.Local, или с помощью DateTimeStyles.AssumeUniversal флагов и DateTimeStyles.AdjustToUniversal , которые возвращают DateTime значение, свойство которого Kind имеет значение DateTimeKind.Utc. Если в содержится информация о часовом поясе, при необходимости время преобразуется в местное время, а свойству Kind возвращаемого DateTime объекта присваивается значение DateTimeKind.Local. Это поведение можно изменить, используя DateTimeStyles.RoundtripKind флаг , чтобы не преобразовывать время UTC в местное время и задать Kind для свойства значение DateTimeKind.Utc.
Параметр format
содержит шаблон, соответствующий ожидаемому формату s
параметра. Шаблон в параметре format
состоит из одного или нескольких настраиваемых описателей формата из таблицы Настраиваемые строки формата даты и времени или одного описателя стандартного формата, который идентифицирует предопределенный шаблон из таблицы Стандартные строки формата даты и времени .
Если вы не используете разделители даты и времени в пользовательском формате, используйте инвариантные язык и региональные параметры для provider
параметра и наиболее широкую форму каждого описателя настраиваемого формата. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму "HH", а не более узкую форму "H".
Примечание
Вместо того чтобы требовать, s
чтобы операция синтаксического анализа соответствовала одному формату, можно вызвать DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метод и указать несколько разрешенных форматов. Это повышает вероятность успешного выполнения операции синтаксического анализа.
Определенные символы даты и времени и строки (например, названия дней недели на определенном языке), используемые в s
, определяются параметром provider
, как и точный формат , если format
является строкой описатель стандартного s
формата. Параметр provider
может иметь любой из следующих значений:
Объект CultureInfo , представляющий язык и региональные параметры, используемые для интерпретации
s
. Объект DateTimeFormatInfo , возвращаемый свойством DateTimeFormat , определяет символы и форматирование вs
.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Пользовательская IFormatProvider реализация, метод которой GetFormat возвращает объект CultureInfo или DateTimeFormatInfo объект, предоставляющий сведения о форматировании.
Если provider
имеет значение null
, CultureInfo используется объект , соответствующий текущему языку и региональным параметрам.
Параметр styles
включает один или несколько элементов DateTimeStyles перечисления, которые определяют, могут ли в и где могут отображаться пробелы, не определенные параметром format
s
, и которые управляют точным поведением операции синтаксического анализа. В следующей таблице описано, как каждый член DateTimeStyles перечисления влияет на работу TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метода .
Элемент DateTimeStyles | Описание |
---|---|
AdjustToUniversal | s Анализирует и при необходимости преобразует его в формат UTC. Если s включает смещение часового пояса или не s содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращаемого DateTime значения в формат UTC и задает свойству Kind значение DateTimeKind.Utc. Если s указывает, что он представляет формат UTC, или если s не содержит сведения о часовом поясе, но styles включает DateTimeStyles.AssumeUniversal флаг, метод анализирует строку, не выполняет преобразование часового пояса для возвращаемого DateTime значения и задает свойству Kind значение DateTimeKind.Utc. Во всех остальных случаях флаг не действует. |
AllowInnerWhite | Указывает, что пробелы, не определенные в , format могут отображаться между отдельными элементами даты или времени. |
AllowLeadingWhite | Указывает, что пробелы, не определенные параметром , format могут отображаться в начале s . |
AllowTrailingWhite | Указывает, что пробелы, не определенные параметром , format могут отображаться в конце s . |
AllowWhiteSpaces | Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные .format |
AssumeLocal | Указывает, что если s отсутствуют какие-либо сведения о часовом поясе, предполагается, что он представляет местное время. DateTimeStyles.AdjustToUniversal Если флаг отсутствует, свойству Kind возвращаемого DateTime значения присваивается значение DateTimeKind.Local. |
AssumeUniversal | Указывает, что если s отсутствуют какие-либо сведения о часовом поясе, предполагается, что он представляет формат UTC. DateTimeStyles.AdjustToUniversal Если флаг отсутствует, метод преобразует возвращаемое DateTime значение из UTC в местное время и устанавливает для его Kind свойства значение DateTimeKind.Local. |
NoCurrentDateDefault | Если s содержит время без сведений о дате, дата возвращаемого значения имеет значение DateTime.MinValue.Date . |
None | Параметр s анализируется с использованием значений по умолчанию. Пробелы, отличные от присутствующих в , format не допускаются. Если s отсутствует компонент даты, дата возвращаемого DateTime значения устанавливается на 01.01.0001. Если s не содержит сведений о часовом поясе, свойству Kind возвращаемого DateTime объекта присваивается значение DateTimeKind.Unspecified. Если сведения о часовом поясе присутствуют в , время преобразуется в s местное время, а свойству Kind возвращаемого DateTime объекта присваивается значение DateTimeKind.Local. |
RoundtripKind | Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в значение со свойством DateTimeKindDateTimeKind.Local. Этот флаг в первую очередь предотвращает преобразование времени в формате UTC в местное время. |
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4 метод возвращает false
значение , TryParseExact если анализируемая строка содержит компонент часа и конструктор AM/PM, которые не согласуются. В платформа .NET Framework 3.5 и более ранних версий конструктор AM/PM игнорируется.
См. также раздел
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Анализ строк даты и времени в .NET Framework
- Строки стандартных форматов даты и времени
- Строки настраиваемых форматов даты и времени
Применяется к
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат представления строки должен полностью соответствовать хотя бы одному заданному формату. Метод возвращает значение, указывающее, успешно ли выполнено преобразование.
public:
static bool TryParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
Параметры
- s
- String
Строка, содержащая дату и время, которые нужно преобразовать.
- formats
- String[]
Массив разрешенных форматов s
.
- provider
- IFormatProvider
Объект, предоставляющий сведения о формате параметра s
для определенного языка и региональных параметров.
- style
- DateTimeStyles
Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s
. Обычно указывается значение None.
- result
- DateTime
При возврате этим методом содержит DateTime значение, эквивалентное дате и времени, содержащимся в s
, если преобразование выполнено успешно, или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если s
или formats
имеет значение null
, либо s
или элемент formats
является пустой строкой, либо формат s
не в точности соответствует заданному хотя бы одним из шаблонов формата в formats
. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение true
, если параметр s
успешно преобразован; в противном случае — значение false
.
Исключения
styles
не является допустимым значением DateTimeStyles.
-или-
styles
содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).
Примеры
В следующем примере метод используется DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) для успешного анализа строки в нескольких возможных форматах.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
"5/1/2009 6:32:00", "05/01/2009 06:32",
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"};
DateTime dateValue;
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
}
}
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
open System
open System.Globalization
let 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" |]
let 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" ]
for dateString in dateStrings do
match DateTime.TryParseExact(dateString, formats, CultureInfo "en-US", DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue}."
| _ ->
printfn $"Unable to convert '{dateString}' to a date."
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
"M/d/yyyy h:mm", "M/d/yyyy h:mm", _
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}
Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
"5/1/2009 6:32:00", "05/01/2009 06:32", _
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}
Dim dateValue As DateTime
For Each dateString As String In dateStrings
If Date.TryParseExact(dateString, formats, _
New CultureInfo("en-US"), _
DateTimeStyles.None, _
dateValue) Then
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
Else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
End If
Next
End Sub
End Module
' The example displays the following output:
' Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
' Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Комментарии
Метод DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) анализирует строковое представление даты, которая соответствует любому из шаблонов, назначенных параметру formats
. Он похож на DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) метод , за исключением того TryParseExact , что метод не создает исключение в случае сбоя преобразования.
Параметр s
содержит дату и время для анализа. s
Если параметр содержит только время и не содержит даты, текущая дата используется, если style
параметр не содержит DateTimeStyles.NoCurrentDateDefault флаг. В этом случае используется дата по умолчанию (DateTime.Date.MinValue
). s
Если параметр содержит только дату и время, используется полночь (00:00:00). Параметр style
также определяет, может ли s
параметр содержать начальные, внутренние или конечные пробелы, отличные от тех, которые разрешены одной из строк формата в formats
.
Если s
не содержит сведений о часовом поясе Kind , свойство возвращаемого DateTime объекта имеет значение DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal , который возвращает DateTime значение, свойство которого Kind равно DateTimeKind.Local, или с помощью DateTimeStyles.AssumeUniversal флагов и DateTimeStyles.AdjustToUniversal , которые возвращают DateTime значение, свойство которого Kind имеет значение DateTimeKind.Utc. Если в содержится информация о часовом поясе, при необходимости время преобразуется в местное время, а свойству Kind возвращаемого DateTime объекта присваивается значение DateTimeKind.Local. Это поведение можно изменить, используя DateTimeStyles.RoundtripKind флаг , чтобы не преобразовывать время UTC в местное время и задать Kind для свойства значение DateTimeKind.Utc.
Параметр formats
содержит массив шаблонов, один из которых s
должен точно соответствовать, если операция синтаксического анализа будет выполнена успешно. Шаблоны в параметре formats
состоят из одного или нескольких описателей настраиваемого формата из таблицы Настраиваемые строки формата даты и времени или одного описатель стандартного формата, который идентифицирует предопределенный шаблон из таблицы Стандартные строки формата даты и времени .
Если вы не используете разделители даты и времени в пользовательском формате, используйте инвариантные язык и региональные параметры для provider
параметра и наиболее широкую форму каждого описателя настраиваемого формата. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму "HH", а не более узкую форму "H".
Определенные символы даты и времени и строки (например, названия дней недели на определенном языке), используемые в s
, определяются параметром provider
, как и точный формат , если format
является строкой описатель стандартного s
формата. Параметр provider
может иметь любой из следующих значений:
Объект CultureInfo , представляющий язык и региональные параметры, используемые для интерпретации
s
. Объект DateTimeFormatInfo , возвращаемый свойством DateTimeFormat , определяет символы и форматирование вs
.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Пользовательская IFormatProvider реализация, метод которой GetFormat возвращает объект CultureInfo или DateTimeFormatInfo объект, предоставляющий сведения о форматировании.
Если provider
имеет значение null
, CultureInfo используется объект , соответствующий текущему языку и региональным параметрам.
Параметр styles
включает один или несколько элементов DateTimeStyles перечисления, которые определяют, могут ли в и где могут отображаться пробелы, не определенные параметром format
s
, и которые управляют точным поведением операции синтаксического анализа. В следующей таблице описано, как каждый член DateTimeStyles перечисления влияет на работу TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метода .
Элемент DateTimeStyles | Описание |
---|---|
AdjustToUniversal | s Анализирует и при необходимости преобразует его в формат UTC. Если s включает смещение часового пояса или не s содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime для преобразования возвращаемого DateTime значения в формат UTC и задает свойству Kind значение DateTimeKind.Utc. Если s указывает, что он представляет формат UTC, или если s не содержит сведения о часовом поясе, но styles включает DateTimeStyles.AssumeUniversal флаг, метод анализирует строку, не выполняет преобразование часового пояса для возвращаемого DateTime значения и задает свойству Kind значение DateTimeKind.Utc. Во всех остальных случаях флаг не действует. |
AllowInnerWhite | Указывает, что пробелы, не определенные в , format могут отображаться между отдельными элементами даты или времени. |
AllowLeadingWhite | Указывает, что пробелы, не определенные параметром , format могут отображаться в начале s . |
AllowTrailingWhite | Указывает, что пробелы, не определенные параметром , format могут отображаться в конце s . |
AllowWhiteSpaces | Указывает, что s может содержать начальные, внутренние и конечные пробелы, не определенные .format |
AssumeLocal | Указывает, что если s отсутствуют какие-либо сведения о часовом поясе, предполагается, что он представляет местное время. DateTimeStyles.AdjustToUniversal Если флаг отсутствует, свойству Kind возвращаемого DateTime значения присваивается значение DateTimeKind.Local. |
AssumeUniversal | Указывает, что если s отсутствуют какие-либо сведения о часовом поясе, предполагается, что он представляет формат UTC. DateTimeStyles.AdjustToUniversal Если флаг отсутствует, метод преобразует возвращаемое DateTime значение из UTC в местное время и устанавливает для его Kind свойства значение DateTimeKind.Local. |
NoCurrentDateDefault | Если s содержит время без сведений о дате, дата возвращаемого значения имеет значение DateTime.MinValue.Date . |
None | Параметр s анализируется с использованием значений по умолчанию. Пробелы, отличные от присутствующих в , format не допускаются. Если s отсутствует компонент даты, дата возвращаемого DateTime значения устанавливается на 01.01.0001. Если s не содержит сведений о часовом поясе, свойству Kind возвращаемого DateTime объекта присваивается значение DateTimeKind.Unspecified. Если сведения о часовом поясе присутствуют в , время преобразуется в s местное время, а свойству Kind возвращаемого DateTime объекта присваивается значение DateTimeKind.Local. |
RoundtripKind | Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование в значение со свойством DateTimeKindDateTimeKind.Local. Этот флаг в первую очередь предотвращает преобразование времени в формате UTC в местное время. |
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4 метод возвращает false
значение , TryParseExact если анализируемая строка содержит компонент часа и конструктор AM/PM, которые не согласуются. В платформа .NET Framework 3.5 и более ранних версий конструктор AM/PM игнорируется.
См. также раздел
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Анализ строк даты и времени в .NET Framework
- Строки стандартных форматов даты и времени
- Строки настраиваемых форматов даты и времени
Применяется к
Обратная связь
Отправить и просмотреть отзыв по