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 г. отмечено начало эпохи 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".
Заметка
Вместо того, чтобы обеспечить 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 | Описание |
|---|---|
| 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 значение со свойством, заданным DateTimeKind.Localдля свойстваKind. Этот флаг в основном предотвращает преобразование времени 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 , если преобразование завершилось сбоем. Преобразование завершается ошибкой, если или естьnull, или элемент formats является пустой строкой, или формат s не совсем так, как указано по крайней мере одним из шаблонов формата вformats. sformatss Этот параметр передается неинициализирован.
Возвращаемое значение
Исключения
Длина элемента 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 | Описание |
|---|---|
| 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 значение со свойством, заданным DateTimeKind.Localдля свойстваKind. Этот флаг в основном предотвращает преобразование времени UTC в локальное время. |
Примечания для тех, кто вызывает этот метод
В .NET Framework 4 TryParseExact метод возвращает false , если строка для синтаксического анализа содержит компонент часа и конструктор AM/PM, которые не находятся в соглашении. В .NET Framework 3.5 и более ранних версиях конструктор AM/PM игнорируется.
См. также раздел
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- Анализ строк даты и времени в .NET Framework
- Стандартные строки формата даты и времени
- Настраиваемые строки формата даты и времени