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 для обеспечения готовности к изменению эпохи см. в
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- 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, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр s
или format
null
, является пустой строкой или не содержит дату и время, соответствующее шаблону, указанному в format
. Этот параметр передается неинициализирован.
Возвращаемое значение
true
, если s
был успешно преобразован; в противном случае false
.
Применяется к
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- 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
.
Применяется к
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
- Исходный код:
- 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, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр s
или format
null
, является пустой строкой или не содержит дату и время, соответствующее шаблону, указанному в format
. Этот параметр передается неинициализирован.
Возвращаемое значение
true
, если s
был успешно преобразован; в противном случае false
.
Исключения
style
не является допустимым значением DateTimeStyles.
-или-
style
содержит недопустимое сочетание значений DateTimeStyles (например, AssumeLocal и AssumeUniversal).
Примеры
В следующем примере показан метод DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime). Обратите внимание, что строка "5.01.2009 8:30" не может быть успешно проанализирована, если параметр 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
, если styles
включает флаг DateTimeStyles.NoCurrentDateDefault. Параметр style
определяет, может ли параметр s
содержать начальные, внутренние или конечные символы пробелов.
Если s
не содержит сведений часового пояса, свойство Kind возвращаемого объекта DateTimeDateTimeKind.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
. Шаблон в параметре
Если в пользовательском шаблоне форматирования не используются разделители даты и времени, используйте инвариантный язык и региональные параметры для параметра 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, предоставляющий сведения о форматировании.
Если 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 имеет значение 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 эквивалент с помощью указанного массива форматов, сведений о формате и региональных параметрах и стилях. Формат строкового представления должен точно соответствовать одному из указанных форматов. Метод возвращает значение, указывающее, выполнено ли преобразование успешно.
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
.
Исключения
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 возвращаемого объекта DateTimeDateTimeKind.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
должен соответствовать точно, если операция синтаксического анализа будет выполнена успешно. Шаблоны в параметре
Если в пользовательском шаблоне форматирования не используются разделители даты и времени, используйте инвариантный язык и региональные параметры для параметра provider
и самой широкой формы каждого пользовательского описателя формата. Например, если вы хотите указать часы в шаблоне, укажите более широкую форму , "HH", вместо более узкой формы "H".
Определенные символы даты и времени и строки (например, имена дней недели на определенном языке), используемые в s
, определяются параметром provider
, как и точный формат s
, если format
является строкой описателя стандартного формата. Параметр 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 имеет значение 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
- строки стандартного формата даты и времени
- настраиваемые строки формата даты и времени