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 эквивалент с помощью указанного массива форматов, сведений о формате и стиле для конкретного языка и региональных параметров. Формат строкового представления должен точно соответствовать одному из указанных форматов. Метод возвращает значение, указывающее, выполнено ли преобразование успешно. |
Комментарии
Important
Эры в японских календарях основаны на царствии императора и поэтому, как ожидается, изменятся. Например, 1 мая 2019 г. отмечено начало эпохи Reiwa в JapaneseCalendar и JapaneseLunisolarCalendar. Такое изменение эпохи влияет на все приложения, использующие эти календари. Для получения дополнительной информации и определения влияния на ваши приложения см. статью Обработка новой эпохи в японском календаре в .NET. Сведения о тестировании ваших приложений на системах Windows для обеспечения их готовности к изменению эпохи см. в разделе Подготовка приложения к изменению японской эпохи. Функции в .NET, поддерживающие календари с несколькими эрами, и рекомендации по работе с календарями, поддерживающими несколько эпох, см. в разделе Работа с эрами.
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
Преобразует указанное представление диапазона даты и времени в его 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 , если преобразование завершилось сбоем. Преобразование завершается ошибкой, если параметр sformat является nullпустой строкой или не содержит дату и время, соответствующее шаблону, указанному в format. Этот параметр передается неинициализирован.
Возвращаемое значение
true Значение , если s оно было успешно преобразовано; в противном случае false.
Исключения
Длина format составляет 1, и это не один из символов описателя формата, определенных для DateTimeFormatInfo.
–или–
format не содержит допустимый шаблон пользовательского формата.
style недопустимое DateTimeStyles значение.
–или–
style содержит недопустимое сочетание значений DateTimeStyles (например, оба AssumeLocal и AssumeUniversal).
Применяется к
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
Преобразует указанный диапазон символов даты и времени в его 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.
Исключения
Длина элемента formats в 1, и это не один из символов описателя формата, определенных для DateTimeFormatInfo.
style недопустимое DateTimeStyles значение.
–или–
style содержит недопустимое сочетание значений DateTimeStyles (например, оба AssumeLocal и AssumeUniversal).
Применяется к
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
Преобразует указанное строковое представление даты и времени в его 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 , если преобразование завершилось сбоем. Преобразование завершается ошибкой, если параметр sformat является nullпустой строкой или не содержит дату и время, соответствующее шаблону, указанному в format. Этот параметр передается неинициализирован.
Возвращаемое значение
true Значение , если s оно было успешно преобразовано; в противном случае false.
Исключения
Длина format составляет 1, и это не один из символов описателя формата, определенных для DateTimeFormatInfo.
–или–
format не содержит допустимый шаблон пользовательского формата.
style недопустимое DateTimeStyles значение.
–или–
style содержит недопустимое сочетание значений DateTimeStyles (например, оба AssumeLocal и AssumeUniversal).
Примеры
В следующем примере демонстрируется DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метод. Обратите внимание, что строка "5/01/2009 8:30 AM" не может быть успешно проанализирована, если styles параметр равен, DateTimeStyles.None так как ведущие пробелы не допускаются format. Кроме того, строка "5/01/2009 09:00" не может быть успешно проанализирована с format "MM/dd/гг:мм", так как строка даты не предшествует номеру месяца с начальным нулем, как 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 определяет дату без элемента времени и операция синтаксического анализа успешно, результирующее DateTime значение имеет время полуночи (00:00:00). Если format определяет время без элемента даты и операция синтаксического анализа, результирующее DateTime значение по умолчанию имеет дату DateTime.Now.Dateили дату DateTime.MinValue.Date , если stylesDateTimeStyles.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".
Note
Вместо того, чтобы обеспечить s соответствие одному формату для успешной операции синтаксического анализа, можно вызвать DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метод и указать несколько разрешенных форматов. Это делает операцию синтаксического анализа более вероятной для успешной.
Определенные символы даты и времени и строки (например, имена дней недели на определенном языке) s определяются provider параметром, как и точный формат s , если format является строкой описателя стандартного формата. Параметр provider может быть любым из следующих значений:
CultureInfo Объект, представляющий язык и региональные параметры, используемые для интерпретации
s. Объект, DateTimeFormatInfo возвращаемый его DateTimeFormat свойством, определяет символы и форматирование вs.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Пользовательская IFormatProvider реализация, метод которой GetFormat возвращает CultureInfo объект или DateTimeFormatInfo объект, предоставляющий сведения о форматировании.
В противном providernullCultureInfo случае используется объект, соответствующий текущему языку и региональным параметрам.
Этот styles параметр включает в себя один или несколько элементов DateTimeStyles перечисления, определяющих, может ли отображаться пробел и где пробелы не определены format , s а также управлять точным поведением операции синтаксического анализа. В следующей таблице описывается, как каждый элемент DateTimeStyles перечисления влияет на операцию TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) метода.
| Член DateTimeStyles | Description |
|---|---|
| AdjustToUniversal | Анализирует s и при необходимости преобразует его в UTC. Если s включает смещение часового пояса или s не содержит сведений о часовом поясе, но styles содержит DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime преобразование возвращаемого DateTime значения в формате UTC и задает для свойства значение KindDateTimeKind.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 в местное время и задает для свойства значение KindDateTimeKind.Local. |
| NoCurrentDateDefault | Если s значение содержит время без сведений о дате, то для даты возвращаемого значения задано DateTime.MinValue.Dateзначение . |
| None | Параметр s анализируется с помощью значений по умолчанию. Пробелы, отличные от этого, format не допускаются. Если s компонент даты отсутствует, дата возвращаемого DateTime значения имеет значение 1/1/0001. Если s нет сведений часового пояса, Kind для свойства возвращаемого DateTime объекта задано значение DateTimeKind.Unspecified. Если данные часового пояса присутствуют s, время преобразуется в локальное время, а Kind свойство возвращаемого DateTime объекта имеет значение DateTimeKind.Local. |
| RoundtripKind | Для строк, содержащих сведения часового пояса, пытается предотвратить преобразование в DateTime значение со свойством, заданным Kindдля свойстваDateTimeKind.Local. Этот флаг в основном предотвращает преобразование времени UTC в локальное время. |
Примечания для тех, кто вызывает этот метод
В .NET Framework 4 TryParseExact метод возвращает false , если строка для синтаксического анализа содержит компонент часа и конструктор AM/PM, которые не находятся в соглашении. В .NET Framework 3.5 и более ранних версиях конструктор AM/PM игнорируется.
См. также раздел
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Анализ строк даты и времени в .NET Framework
- Стандартные строки формата даты и времени
- Настраиваемые строки формата даты и времени
Применяется к
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
- Исходный код:
- DateTime.cs
Преобразует указанное строковое представление даты и времени в его 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. formatssformats Этот параметр передается неинициализирован.
Возвращаемое значение
Исключения
Длина элемента formats в 1, и это не один из символов описателя формата, определенных для DateTimeFormatInfo.
style недопустимое DateTimeStyles значение.
–или–
style содержит недопустимое сочетание значений 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 параметром, как и точный формат s , если format является строкой описателя стандартного формата. Параметр provider может быть любым из следующих значений:
CultureInfo Объект, представляющий язык и региональные параметры, используемые для интерпретации
s. Объект, DateTimeFormatInfo возвращаемый его DateTimeFormat свойством, определяет символы и форматирование вs.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Пользовательская IFormatProvider реализация, метод которой GetFormat возвращает CultureInfo объект или DateTimeFormatInfo объект, предоставляющий сведения о форматировании.
В противном providernullCultureInfo случае используется объект, соответствующий текущему языку и региональным параметрам.
Этот styles параметр включает в себя один или несколько элементов DateTimeStyles перечисления, определяющих, может ли отображаться пробел и где пробелы не определены format , s а также управлять точным поведением операции синтаксического анализа. В следующей таблице описывается, как каждый элемент DateTimeStyles перечисления влияет на операцию TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) метода.
| Член DateTimeStyles | Description |
|---|---|
| AdjustToUniversal | Анализирует s и при необходимости преобразует его в UTC. Если s включает смещение часового пояса или s не содержит сведений о часовом поясе, но styles содержит DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime преобразование возвращаемого DateTime значения в формате UTC и задает для свойства значение KindDateTimeKind.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 в местное время и задает для свойства значение KindDateTimeKind.Local. |
| NoCurrentDateDefault | Если s значение содержит время без сведений о дате, то для даты возвращаемого значения задано DateTime.MinValue.Dateзначение . |
| None | Параметр s анализируется с помощью значений по умолчанию. Пробелы, отличные от этого, format не допускаются. Если s компонент даты отсутствует, дата возвращаемого DateTime значения имеет значение 1/1/0001. Если s нет сведений часового пояса, Kind для свойства возвращаемого DateTime объекта задано значение DateTimeKind.Unspecified. Если данные часового пояса присутствуют s, время преобразуется в локальное время, а Kind свойство возвращаемого DateTime объекта имеет значение DateTimeKind.Local. |
| RoundtripKind | Для строк, содержащих сведения часового пояса, пытается предотвратить преобразование в DateTime значение со свойством, заданным Kindдля свойстваDateTimeKind.Local. Этот флаг в основном предотвращает преобразование времени UTC в локальное время. |
Примечания для тех, кто вызывает этот метод
В .NET Framework 4 TryParseExact метод возвращает false , если строка для синтаксического анализа содержит компонент часа и конструктор AM/PM, которые не находятся в соглашении. В .NET Framework 3.5 и более ранних версиях конструктор AM/PM игнорируется.
См. также раздел
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Анализ строк даты и времени в .NET Framework
- Стандартные строки формата даты и времени
- Настраиваемые строки формата даты и времени