DateTime.TryParse Метод

Определение

Преобразовывает указанное строковое представление даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

Перегрузки

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя указанную информацию о форматировании, связанную с языком и региональными параметрами, и возвращает значение, которое показывает успешность преобразования.

TryParse(String, IFormatProvider, DateTime)

Пытается проанализировать строку в значение.

TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTime)

Пытается проанализировать диапазон символов в значение.

TryParse(ReadOnlySpan<Char>, DateTime)

Преобразовывает указанный диапазон символов даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

TryParse(String, DateTime)

Преобразовывает указанное строковое представление даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

Преобразует представление даты и времени в виде диапазона в его эквивалент DateTime, используя указанную информацию о форматировании, связанную с языком и региональными параметрами, и возвращает значение, которое показывает успешность преобразования.

Комментарии

Важно!

Эры в японских календарях основаны на периодах царствования императоров. Таким образом, ожидается наступление новой эры. Например, 1 мая 2019 года в JapaneseCalendar и JapaneseLunisolarCalendar отмечено как начало эры Рэйва. Изменение эры затрагивает все приложения, использующие эти календари. Дополнительные сведения и определение того, затрагиваются ли ваши приложения, см. в разделе Обработка новой эры в японском календаре в .NET. сведения о тестировании приложений на Windows системах для обеспечения их готовности к изменению эры см. в разделе подготовка приложения к изменению японской эры. Дополнительные сведения о функциях .NET, поддерживающих календари с несколькими Эр, и рекомендации при работе с календарями, поддерживающими несколько эр, см. в разделе Работа с Эр.

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Преобразует заданное строковое представление даты и времени в его эквивалент DateTime, используя указанную информацию о форматировании, связанную с языком и региональными параметрами, и возвращает значение, которое показывает успешность преобразования.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (string s, IFormatProvider provider, System.Globalization.DateTimeStyles styles, out DateTime result);
public static bool TryParse (string? s, IFormatProvider? provider, System.Globalization.DateTimeStyles styles, out DateTime result);
static member TryParse : string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTime) As Boolean

Параметры

s
String

Строка, содержащая дату и время, которые нужно преобразовать.

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.

styles
DateTimeStyles

Побитовая комбинация значений перечисления, которая определяет, как интерпретировать проанализированную дату по отношению к текущему часовому поясу или текущей дате. Обычно указывается значение None.

result
DateTime

При возврате этого метода содержит DateTime значение, эквивалентное дате и времени, содержаемой в s, если преобразование выполнено успешно, или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если значение параметра s равно null или пустой строке ("") или не содержит допустимого строкового представления даты и времени. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

Исключения

styles не является допустимым значением DateTimeStyles.

-или-

styles содержит недопустимое сочетание значений DateTimeStyles (например, и AssumeLocal, и AssumeUniversal ).

provider является нейтральным языком и региональными параметрами и не может использоваться в операции анализа.

Примеры

В следующем примере показан DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) метод.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString;
      CultureInfo culture;
      DateTimeStyles styles;
      DateTime dateResult;

      // Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM";
      culture = CultureInfo.CreateSpecificCulture("en-US");
      styles = DateTimeStyles.None;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.",
                           dateString);

      // Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);

      // Parse a date and time that is assumed to be local.
      // This time is five hours behind UTC. The local system's time zone is
      // eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00";
      styles = DateTimeStyles.AssumeLocal;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);

      // Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00";
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);

      // Assume a date and time string formatted for the fr-FR culture is the local
      // time and convert it to UTC.
      dateString = "2008-03-01 10:00";
      culture = CultureInfo.CreateSpecificCulture("fr-FR");
      styles = DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeLocal;
      if (DateTime.TryParse(dateString, culture, styles, out dateResult))
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, dateResult, dateResult.Kind);
      else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
   }
}
// The example displays the following output to the console:
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
//       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
//       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
//       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
open System
open System.Globalization

[<EntryPoint>]
let main _ =
    // Parse a date and time with no styles.
    let dateString = "03/01/2009 10:00 AM"
    let culture = CultureInfo.CreateSpecificCulture "en-US"
    let styles = DateTimeStyles.None
    match DateTime.TryParse(dateString, culture, styles) with
    | true, dateResult ->
        printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
    | _ -> 
        printfn $"Unable to convert {dateString} to a date and time."

    // Parse the same date and time with the AssumeLocal style.
    let styles = DateTimeStyles.AssumeLocal
    match DateTime.TryParse(dateString, culture, styles) with
    | true, dateResult ->
        printfn $"{dateString} converted to {dateResult} {dateResult.Kind}." 
    | _ ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Parse a date and time that is assumed to be local.
    // This time is five hours behind UTC. The local system's time zone is
    // eight hours behind UTC.
    let dateString = "2009/03/01T10:00:00-5:00"
    let styles = DateTimeStyles.AssumeLocal
    match DateTime.TryParse(dateString, culture, styles) with
    | true, dateResult ->
        printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
    | _ ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Attempt to convert a string in improper ISO 8601 format.
    let dateString = "03/01/2009T10:00:00-5:00"
    match DateTime.TryParse(dateString, culture, styles) with
    | true, dateResult ->
        printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
    | _ ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Assume a date and time string formatted for the fr-FR culture is the local
    // time and convert it to UTC.
    let dateString = "2008-03-01 10:00"
    let culture = CultureInfo.CreateSpecificCulture "fr-FR"
    let styles = DateTimeStyles.AdjustToUniversal ||| DateTimeStyles.AssumeLocal
    match DateTime.TryParse(dateString, culture, styles) with
    | true, dateResult ->
        printfn $"{dateString} converted to {dateResult} {dateResult.Kind}." 
    | _ ->
        printfn $"Unable to convert {dateString} to a date and time."

    0

// The example displays the following output to the console:
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
//       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
//       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
//       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
//       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateString As String
      Dim culture As CultureInfo
      Dim styles As DateTimeStyles 
      Dim dateResult As DateTime
      
      ' Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM"
      culture = CultureInfo.CreateSpecificCulture("en-US")
      styles = DateTimeStyles.None
      If DateTime.TryParse(dateString, culture, styles, dateResult) Then
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
      
      ' Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
      
      ' Parse a date and time that is assumed to be local.
      ' This time is five hours behind UTC. The local system's time zone is 
      ' eight hours behind UTC.
      dateString = "2009/03/01T10:00:00-5:00"
      styles = DateTimeStyles.AssumeLocal
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
      
      ' Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00"
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      

      ' Assume a date and time string formatted for the fr-FR culture is the local 
      ' time and convert it to UTC.
      dateString = "2008-03-01 10:00"
      culture = CultureInfo.CreateSpecificCulture("fr-FR")
      styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
      If DateTime.TryParse(dateString, culture, styles, dateResult)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, dateResult, dateResult.Kind)
      Else
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End If      
   End Sub
End Module
' The example displays the following output to the console:
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
'       03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
'       2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
'       Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
'       2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.

Комментарии

Метод DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) анализирует строку, которая может содержать сведения о дате, времени и часовом поясе. Он аналогичен методу DateTime.Parse(String, IFormatProvider, DateTimeStyles) , за исключением того, что DateTime.TryParse(String, DateTime) метод не создает исключение, если преобразование завершается сбоем.

Этот метод пытается игнорировать нераспознанные данные и полностью анализировать s их. Если s содержит время, но нет даты, метод по умолчанию заменяет текущую дату или, если styles включает NoCurrentDateDefault флаг, он заменяет DateTime.Date.MinValue. Если s содержит дату, но нет времени, в качестве времени по умолчанию используется 12:00 полночь. Если дата присутствует, но его компонент года состоит только из двух цифр, он преобразуется в год в provider текущем календаре параметра на основе значения Calendar.TwoDigitYearMax свойства. Все начальные, внутренние или конечные символы пробелов s игнорируются. Дата и время могут быть заключены в скобки с помощью пары символов начала и окончания номера ("#", U+0023) и могут быть заключены в конце с одним или несколькими символами NULL (U+0000).

Определенные допустимые форматы для элементов даты и времени, а также имен и символов, используемых в датах и времени, определяются параметром provider , который может быть любым из следующих:

  • Объект CultureInfo , представляющий язык и региональные параметры, форматирование которых используется в параметре s . Объект, DateTimeFormatInfo возвращаемый свойством CultureInfo.DateTimeFormat , определяет форматирование, используемое в s.

  • Объект DateTimeFormatInfo , определяющий форматирование, используемое в s.

  • Пользовательская реализация интерфейса IFormatProvider. Его IFormatProvider.GetFormat метод возвращает объект, определяющий DateTimeFormatInfo форматирование, используемое в s.

Если значением параметра provider является null, используется текущий язык и региональные параметры.

Если s строковое представление високосного дня в високосном году в текущем календаре, метод успешно анализируется s . Если s строковое представление високосного дня в текущем календаре providerне високосного года, операция синтаксического анализа завершается ошибкой, а метод возвращает .false

Параметр styles определяет точную интерпретацию проанализированной строки и способ обработки операции синтаксического анализа. Это может быть один или несколько элементов перечисления DateTimeStyles , как описано в следующей таблице.

Элемент DateTimeStyles Описание
AdjustToUniversal Анализирует s и при необходимости преобразует его в формат UTC. Если s включает смещение часового пояса или не s содержит сведений о часовом поясе, но styles включает DateTimeStyles.AssumeLocal флаг, метод анализирует строку, вызывает ToUniversalTime преобразование возвращаемого DateTime значения в формате UTC и задает Kind для свойства значение DateTimeKind.Utc. Если s указывает, что он представляет utc или s не содержит сведения о часовом поясе, но styles включает DateTimeStyles.AssumeUniversal флаг, метод анализирует строку, не выполняет преобразование часового пояса для Kind возвращаемого DateTime значения и задает для свойства значение DateTimeKind.Utc. Во всех остальных случаях флаг не действует.
AllowInnerWhite Хотя это значение является допустимым, это значение игнорируется. Внутреннее пустое пространство разрешено в элементах sдаты и времени .
AllowLeadingWhite Хотя это значение является допустимым, это значение игнорируется. В начале пробела допускается в элементах sдаты и времени .
AllowTrailingWhite Хотя это значение является допустимым, это значение игнорируется. Конечные пробелы разрешены в элементах sдаты и времени .
AllowWhiteSpaces Указывает, что s могут содержать начальные, внутренние и конечные пробелы. Это поведение по умолчанию. Его нельзя переопределить путем предоставления более строгого DateTimeStyles значения перечисления, например DateTimeStyles.None.
AssumeLocal Указывает, что при s отсутствии сведений о часовом поясе предполагается, что это местное время. Если DateTimeStyles.AdjustToUniversal флаг отсутствует, Kind свойству возвращаемого DateTime значения присваивается значение DateTimeKind.Local.
AssumeUniversal Указывает, что если s нет сведений о часовом поясе, предполагается, что он представляет utc. Если DateTimeStyles.AdjustToUniversal флаг отсутствует, метод преобразует возвращаемое DateTime значение из UTC в местное время и задает для его Kind свойства значение DateTimeKind.Local.
None Хотя это значение является допустимым, это значение игнорируется.
RoundtripKind Для строк, содержащих сведения о часовом поясе, пытается предотвратить преобразование строки даты и времени в DateTime значение со свойством, Kind равным свойству DateTimeKind.Local. Как правило, такая строка создается путем вызова DateTime.ToString(String) метода с помощью описателей стандартного формата "o", "r" или "u".

Если s нет сведений о часовом поясе, метод возвращает DateTime значение, DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) свойство которого Kind не указано styles DateTimeKind.Unspecified в противном случае. Если s включает сведения о смещениях часового пояса или часового пояса DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) , метод выполняет любое необходимое преобразование времени и возвращает одно из следующих элементов:

  • DateTime Значение, дата и время которого отражают местное время и свойство которого Kind равноDateTimeKind.Local.

  • Или, если styles включает флаг, значение, DateTime дата и время которого отражают utc и свойство DateTimeKind.Utc.Kind AdjustToUniversal

Это поведение можно переопределить с помощью флага DateTimeStyles.RoundtripKind .

Анализ пользовательских языков и региональных параметров

Если вы анализируете строку даты и времени, созданную для пользовательского языка и региональных параметров, используйте TryParseExact метод вместо TryParse метода, чтобы повысить вероятность успешного выполнения операции синтаксического анализа. Строка даты и времени пользовательского языка и региональных параметров может быть сложной и сложной для синтаксического анализа. Метод TryParse пытается проанализировать строку с несколькими неявными шаблонами синтаксического анализа, все из которых могут завершиться ошибкой. Напротив, TryParseExact метод требует явно назначить один или несколько точных шаблонов синтаксического анализа, которые, скорее всего, будут успешными.

Дополнительные сведения о пользовательских языках и региональных параметрах см. в System.Globalization.CultureAndRegionInfoBuilder этом классе.

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

Форматирование зависит от свойств текущего DateTimeFormatInfo объекта, предоставленного provider параметром. Метод TryParse может неожиданно завершиться ошибкой и вернуться False , если текущее DateSeparator значение и TimeSeparator свойства имеют одинаковое значение.

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

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

TryParse(String, IFormatProvider, DateTime)

Пытается проанализировать строку в значение.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] DateTime % result) = IParsable<DateTime>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out DateTime result);
static member TryParse : string * IFormatProvider * DateTime -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As DateTime) As Boolean

Параметры

s
String
provider
IFormatProvider
result
DateTime

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

Boolean

trueЗначение , falseесли s анализ успешно выполнен; в противном случае .

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTime)

Пытается проанализировать диапазон символов в значение.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] DateTime % result) = ISpanParsable<DateTime>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out DateTime result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As DateTime) As Boolean

Параметры

provider
IFormatProvider
result
DateTime

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

Boolean

trueЗначение , falseесли s анализ успешно выполнен; в противном случае .

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

TryParse(ReadOnlySpan<Char>, DateTime)

Преобразовывает указанный диапазон символов даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (ReadOnlySpan<char> s, out DateTime result);
static member TryParse : ReadOnlySpan<char> * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As DateTime) As Boolean

Параметры

s
ReadOnlySpan<Char>

Строка, содержащая дату и время, которые нужно преобразовать.

result
DateTime

При возвращении этого метода содержит DateTime значение, эквивалентное дате и времени, в sслучае успешного преобразования или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если значение параметра s равно null или пустой строке ("") или не содержит допустимого строкового представления даты и времени. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

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

TryParse(String, DateTime)

Преобразовывает указанное строковое представление даты и времени в его эквивалент DateTime и возвращает значение, позволяющее определить успешность преобразования.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (string s, out DateTime result);
public static bool TryParse (string? s, out DateTime result);
static member TryParse : string * DateTime -> bool
Public Shared Function TryParse (s As String, ByRef result As DateTime) As Boolean

Параметры

s
String

Строка, содержащая дату и время, которые нужно преобразовать.

result
DateTime

При возвращении этого метода содержит DateTime значение, эквивалентное дате и времени, в sслучае успешного преобразования или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если значение параметра s равно null или пустой строке ("") или не содержит допустимого строкового представления даты и времени. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

Примеры

В следующем примере в метод передается ряд строк DateTime.TryParse(String, DateTime) даты и времени.

using namespace System;
using namespace System::Globalization;

void main()
{
   array<String^>^ dateStrings = { "05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8", 
                                   "2009-05-01T14:57:32.8375298-04:00", 
                                    "5/01/2008 14:57:32.80 -07:00", 
                                    "1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM", 
                                    "Fri, 15 May 2009 20:10:57 GMT" };
   DateTime dateValue;

   Console::WriteLine("Attempting to parse strings using {0} culture.", 
                     CultureInfo::CurrentCulture->Name);
   for each (String^ dateString in dateStrings)
   {
      if (DateTime::TryParse(dateString, dateValue)) 
         Console::WriteLine("  Converted '{0}' to {1} ({2}).", dateString, 
                           dateValue, dateValue.Kind);
      else
         Console::WriteLine("  Unable to parse '{0}'.", dateString);
   }
}
// The example displays the following output: 
//    Attempting to parse strings using en-US culture. 
//       Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified). 
//       Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified). 
//       Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local). 
//       Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local). 
//       Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified). 
//       Unable to parse '16-05-2009 1:00:32 PM'. 
//       Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = {"05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
                              "2009-05-01T14:57:32.8375298-04:00", "5/01/2008",
                              "5/01/2008 14:57:32.80 -07:00",
                              "1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM",
                              "Fri, 15 May 2009 20:10:57 GMT" };
      DateTime dateValue;

      Console.WriteLine("Attempting to parse strings using {0} culture.",
                        CultureInfo.CurrentCulture.Name);
      foreach (string dateString in dateStrings)
      {
         if (DateTime.TryParse(dateString, out dateValue))
            Console.WriteLine("  Converted '{0}' to {1} ({2}).", dateString,
                              dateValue, dateValue.Kind);
         else
            Console.WriteLine("  Unable to parse '{0}'.", dateString);
      }
   }
}
// The example displays output like the following:
//    Attempting to parse strings using en-US culture.
//      Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
//      Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
//      Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
//
//      Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
//      Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
//      Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
//      Unable to parse '16-05-2009 1:00:32 PM'.
//      Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
open System
open System.Globalization

let dateStrings = 
    [ "05/01/2009 14:57:32.8"; "2009-05-01 14:57:32.8"
      "2009-05-01T14:57:32.8375298-04:00"; "5/01/2008"
      "5/01/2008 14:57:32.80 -07:00"
      "1 May 2008 2:57:32.8 PM"; "16-05-2009 1:00:32 PM"
      "Fri, 15 May 2009 20:10:57 GMT" ]

printfn $"Attempting to parse strings using {CultureInfo.CurrentCulture.Name} culture."
for dateString in dateStrings do
    match DateTime.TryParse dateString with
    | true, dateValue ->
        printfn $"  Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"  Unable to parse '{dateString}'."


// The example displays output like the following:
//    Attempting to parse strings using en-US culture.
//      Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
//      Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
//      Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
//      Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
//      Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
//      Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
//      Unable to parse '16-05-2009 1:00:32 PM'.
//      Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim dateStrings() As String = {"05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
                                     "2009-05-01T14:57:32.8375298-04:00", "5/01/2008",
                                     "5/01/2008 14:57:32.80 -07:00",
                                     "1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM",
                                     "Fri, 15 May 2009 20:10:57 GMT"}
      Dim dateValue As Date
      
      Console.WriteLine("Attempting to parse strings using {0} culture.", _
                        CultureInfo.CurrentCulture.Name)
      For Each dateString As String In dateStrings
         If Date.TryParse(dateString, dateValue) Then
            Console.WriteLine("  Converted '{0}' to {1} ({2}).", dateString, _
                              dateValue, dateValue.Kind)
         Else
            Console.WriteLine("  Unable to parse '{0}'.", dateString)
         End If
      Next
   End Sub
End Module
' The example displays output like the following:
'    Attempting to parse strings using en-US culture.
'      Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
'      Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
'      Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
'
'      Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
'      Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
'      Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
'      Unable to parse '16-05-2009 1:00:32 PM'.
'      Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).

Комментарии

Метод DateTime.TryParse(String, DateTime) аналогичен методу DateTime.Parse(String) , за исключением того, что TryParse(String, DateTime) метод не создает исключение, если преобразование завершается ошибкой.

Строка s анализируется с помощью сведений о форматировании в текущем DateTimeFormatInfo объекте, который неявно предоставляется текущим языком и региональными параметрами.

Этот метод пытается игнорировать нераспознанные данные, если это возможно, и заполняет отсутствующие данные месяца, дня и года текущей датой. Если s содержит только дату и нет времени, этот метод предполагает, что время равно 12:00 полуночи. Если s включает компонент даты с двузначным годом, он преобразуется в год в текущем календаре текущего Calendar.TwoDigitYearMax языка и региональных параметров на основе значения свойства. Любой начальный, внутренний или конечный символ s пробела игнорируется. Дату и время можно скобить с парой начальных и конечных символов ЗНАКА НОМЕРА ('#', U+0023) и содержать один или несколько символов NULL (U+0000).

DateTime.TryParse(String, DateTime) Так как метод пытается проанализировать строковое представление даты и времени с помощью правил форматирования текущего языка и региональных параметров, попытка проанализировать определенную строку в разных языках и региональных параметрах может завершиться ошибкой или возвратить различные результаты. Если определенный формат даты и времени будет проанализирован в разных языковых стандартахTryParseExact, используйте DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) метод или одну из перегрузок метода и предоставьте описатель формата.

Если s строковое представление високосного дня в високосном году в текущем календаре, метод успешно анализируется s . Если s строковое представление високосного дня в непрыжном году в текущем календаре текущего языка и региональных параметров завершается сбоем, а метод возвращается false.

Если s сведения о часовом поясе отсутствуют, содержит DateTime значение, result свойство которого Kind находится DateTimeKind.Unspecified при возвращении метода. Если анализируемая строка содержит сведения о часовом поясе, содержит значение, result свойство которого Kind находится DateTimeKind.Local при возвращении DateTime метода.

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

Форматирование зависит от свойств текущего DateTimeFormatInfo объекта, который по умолчанию является производным от элемента региональных и языковых параметров в панель управления. Метод TryParse может неожиданно завершиться ошибкой и вернуться False , если текущий DateSeparator и TimeSeparator свойства имеют одинаковое значение.

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

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

Преобразует представление даты и времени в виде диапазона в его эквивалент DateTime, используя указанную информацию о форматировании, связанную с языком и региональными параметрами, и возвращает значение, которое показывает успешность преобразования.

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

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, которые представляют преобразуемые дату и время.

provider
IFormatProvider

Объект, который предоставляет сведения о форматировании параметра s в зависимости от языка и региональных параметров.

styles
DateTimeStyles

Побитовая комбинация значений перечисления, которая определяет, как интерпретировать проанализированную дату по отношению к текущему часовому поясу или текущей дате. Обычно указывается значение None.

result
DateTime

При возвращении этого метода содержит DateTime значение, эквивалентное дате и времени, в sслучае успешного преобразования или DateTime.MinValue , если преобразование завершилось сбоем. Преобразование завершается неудачей, если значение параметра s равно null или пустой строке ("") или не содержит допустимого строкового представления даты и времени. Этот параметр передается неинициализированным.

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

Boolean

Значение true, если параметр s успешно преобразован; в противном случае — значение false.

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