DateTime.TryParse Método

Definição

Converte a representação de cadeia de caracteres especificada de uma data e hora no equivalente de DateTime e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

Sobrecargas

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

Converte a representação de intervalo de uma data e hora no equivalente de DateTime usando as informações de formato específicas da cultura e o estilo de formatação especificados e retorna um valor que indica se a conversão foi bem-sucedida.Converts the span representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParse(String, DateTime)

Converte a representação de cadeia de caracteres especificada de uma data e hora no equivalente de DateTime e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Converte a representação de cadeia de caracteres especificada de uma data e hora no equivalente de DateTime usando as informações de formato específicas da cultura e estilo de formatação especificados e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

TryParse(ReadOnlySpan<Char>, DateTime)

Converte o intervalo de caracteres especificado de uma data e hora no equivalente de DateTime e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified char span of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

Comentários

Importante

As eras nos calendários japoneses se baseiam no reinado do Imperador e, portanto, estão sujeitas a alterações.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Por exemplo, 1º de maio de 2019 marcou o início da era Reiwa no JapaneseCalendar e no JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Tal alteração de eras afeta todos os aplicativos que usam esses calendários.Such a change of era affects all applications that use these calendars. Veja Tratamento de uma nova era no calendário japonês no .NET para obter mais informações e para determinar se seus aplicativos são afetados.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Veja Preparar seu aplicativo para a mudança de era no calendário japonês para obter informações sobre como testar seus aplicativos em sistemas Windows para assegurar que eles estejam preparados para a alteração de era.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Confira Trabalhando com eras para ver recursos do .NET que dão suporte a calendários com várias eras e confira práticas recomendadas de trabalho com calendários que dão suporte a várias eras.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

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

Converte a representação de intervalo de uma data e hora no equivalente de DateTime usando as informações de formato específicas da cultura e o estilo de formatação especificados e retorna um valor que indica se a conversão foi bem-sucedida.Converts the span representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

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);
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

Parâmetros

s
ReadOnlySpan<Char>

Um intervalo que contém os caracteres que representam a data e hora a converter.A span containing the characters representing the date and time to convert.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas de cultura sobre s.An object that supplies culture-specific formatting information about s.

styles
DateTimeStyles

Uma combinação bit a bit dos valores de enumeração que define como interpretar a data analisada em relação ao fuso horário atual ou à data atual.A bitwise combination of enumeration values that defines how to interpret the parsed date in relation to the current time zone or the current date. Um valor típico a ser especificado é None.A typical value to specify is None.

result
DateTime

Quando esse método retorna, ele contém o valor DateTime equivalente à data e hora contida em s, caso a conversão seja bem-sucedida ou caso a conversão MinValue falhe.When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. A conversão falhará se o parâmetro s for null, for uma cadeia de caracteres vazia ("") ou não contiver uma representação de cadeia de caracteres válida de uma data e hora.The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. Este parâmetro é passado não inicializado.This parameter is passed uninitialized.

Retornos

true caso o parâmetro s tenha sido convertido com êxito; do contrário, false.true if the s parameter was converted successfully; otherwise, false.

TryParse(String, DateTime)

Converte a representação de cadeia de caracteres especificada de uma data e hora no equivalente de DateTime e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified string representation of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::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

Parâmetros

s
String

Uma cadeia de caracteres contendo uma data e hora a ser convertida.A string containing a date and time to convert.

result
DateTime

Quando esse método retorna, ele contém o valor DateTime equivalente à data e hora contida em s, caso a conversão seja bem-sucedida ou caso a conversão MinValue falhe.When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. A conversão falhará se o parâmetro s for null, for uma cadeia de caracteres vazia ("") ou não contiver uma representação de cadeia de caracteres válida de uma data e hora.The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. Este parâmetro é passado não inicializado.This parameter is passed uninitialized.

Retornos

true caso o parâmetro s tenha sido convertido com êxito; do contrário, false.true if the s parameter was converted successfully; otherwise, false.

Exemplos

O exemplo a seguir passa um número de cadeias de caracteres de data e hora para o método DateTime.TryParse(String, DateTime).The following example passes a number of date and time strings to the DateTime.TryParse(String, DateTime) method.

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).
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).

Comentários

O método DateTime.TryParse(String, DateTime) é semelhante ao método DateTime.Parse(String), exceto pelo fato de que o método TryParse(String, DateTime) não lança uma exceção se a conversão falhar.The DateTime.TryParse(String, DateTime) method is similar to the DateTime.Parse(String) method, except that the TryParse(String, DateTime) method does not throw an exception if the conversion fails.

A cadeia de caracteres s é analisada usando informações de formatação no objeto DateTimeFormatInfo atual, que é fornecido implicitamente pela cultura do thread atual.The string s is parsed using formatting information in the current DateTimeFormatInfo object, which is supplied implicitly by the current thread culture.

Esse método tenta ignorar dados não reconhecidos, se possível, e preenche as informações de mês, dia e ano ausentes com a data atual.This method tries to ignore unrecognized data, if possible, and fills in missing month, day, and year information with the current date. Se s contiver apenas uma data e nenhuma hora, esse método assumirá que a hora é de 12:00 a meia-noite.If s contains only a date and no time, this method assumes the time is 12:00 midnight. Se s incluir um componente de data com um ano de dois dígitos, ele será convertido em um ano no calendário atual da cultura atual com base no valor da propriedade Calendar.TwoDigitYearMax.If s includes a date component with a two-digit year, it is converted to a year in the current culture's current calendar based on the value of the Calendar.TwoDigitYearMax property. Qualquer caractere de espaço em branco à esquerda, interna ou à direita em s é ignorado.Any leading, inner, or trailing white space character in s is ignored. A data e a hora podem ficar entredas com um par de caracteres de sinal de número à esquerda e à direita (' # ', U + 0023) e podem ser enbarradas com um ou mais caracteres nulos (U + 0000).The date and time can be bracketed with a pair of leading and trailing NUMBER SIGN characters ('#', U+0023), and can be trailed with one or more NULL characters (U+0000).

Como o método DateTime.TryParse(String, DateTime) tenta analisar a representação da cadeia de caracteres de uma data e hora usando as regras de formatação da cultura atual, tentar analisar uma cadeia de caracteres específica em diferentes culturas pode falhar ou retornar resultados diferentes.Because the DateTime.TryParse(String, DateTime) method tries to parse the string representation of a date and time using the formatting rules of the current culture, trying to parse a particular string across different cultures can either fail or return different results. Se um formato de data e hora específico for analisado entre diferentes localidades, use o método DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) ou uma das sobrecargas do método TryParseExact e forneça um especificador de formato.If a specific date and time format will be parsed across different locales, use the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method or one of the overloads of the TryParseExact method and provide a format specifier.

Se s for a representação de cadeia de caracteres de um dia bissexto em um ano bissexto no calendário atual, o método analisará s com êxito.If s is the string representation of a leap day in a leap year in the current calendar, the method parses s successfully. Se s for a representação de cadeia de caracteres de um dia bissexto em um ano não bissexto no calendário atual da cultura atual, a operação de análise falhará e o método retornará false.If s is the string representation of a leap day in a non-leap year in the current culture's current calendar, the parse operation fails and the method returns false.

Se s não contiver informações de fuso horário, result conterá um valor DateTime cuja propriedade Kind seja DateTimeKind.Unspecifiedda quando o método retornar.If s contains no time zone information, result contains a DateTime value whose Kind property is DateTimeKind.Unspecified when the method returns. Se a cadeia de caracteres a ser analisada contiver informações de fuso horário, result conterá um valor DateTime cuja propriedade Kind seja DateTimeKind.Localda quando o método retornar.If the string to be parsed contains time zone information, result contains a DateTime value whose Kind property is DateTimeKind.Local when the method returns.

Notas aos Chamadores

A formatação é influenciada pelas propriedades do objeto DateTimeFormatInfo atual, que por padrão são derivadas do item Opções regionais e de idioma no painel de controle.Formatting is influenced by properties of the current DateTimeFormatInfo object, which by default are derived from the Regional and Language Options item in Control Panel. O método TryParse pode falhar inesperadamente e retornar False se as propriedades DateSeparator atuais e TimeSeparator estiverem definidas com o mesmo valor.The TryParse method can unexpectedly fail and return False if the current DateSeparator and TimeSeparator properties are set to the same value.

Veja também

TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

Converte a representação de cadeia de caracteres especificada de uma data e hora no equivalente de DateTime usando as informações de formato específicas da cultura e estilo de formatação especificados e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified string representation of a date and time to its DateTime equivalent using the specified culture-specific format information and formatting style, and returns a value that indicates whether the conversion succeeded.

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);
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

Parâmetros

s
String

Uma cadeia de caracteres contendo uma data e hora a ser convertida.A string containing a date and time to convert.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas de cultura sobre s.An object that supplies culture-specific formatting information about s.

styles
DateTimeStyles

Uma combinação bit a bit dos valores de enumeração que define como interpretar a data analisada em relação ao fuso horário atual ou à data atual.A bitwise combination of enumeration values that defines how to interpret the parsed date in relation to the current time zone or the current date. Um valor típico a ser especificado é None.A typical value to specify is None.

result
DateTime

Quando esse método retorna, ele contém o valor DateTime equivalente à data e hora contida em s, caso a conversão seja bem-sucedida ou caso a conversão MinValue falhe.When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. A conversão falhará se o parâmetro s for null, for uma cadeia de caracteres vazia ("") ou não contiver uma representação de cadeia de caracteres válida de uma data e hora.The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. Este parâmetro é passado não inicializado.This parameter is passed uninitialized.

Retornos

true caso o parâmetro s tenha sido convertido com êxito; do contrário, false.true if the s parameter was converted successfully; otherwise, false.

Exceções

styles não é um valor DateTimeStyles válido.styles is not a valid DateTimeStyles value.

-ou--or- styles contém uma combinação inválida de valores DateTimeStyles (por exemplo, AssumeLocal e AssumeUniversal).styles contains an invalid combination of DateTimeStyles values (for example, both AssumeLocal and AssumeUniversal).

provider é uma cultura neutra e não pode ser usado em uma operação de análise.provider is a neutral culture and cannot be used in a parsing operation.

Exemplos

O exemplo a seguir ilustra o método DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime).The following example illustrates the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method.

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.
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.

Comentários

O método DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) analisa uma cadeia de caracteres que pode conter informações de data, hora e fuso horário.The DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method parses a string that can contain date, time, and time zone information. É semelhante ao método DateTime.Parse(String, IFormatProvider, DateTimeStyles), exceto pelo fato de que o método DateTime.TryParse(String, DateTime) não gera uma exceção se a conversão falhar.It is similar to the DateTime.Parse(String, IFormatProvider, DateTimeStyles) method, except that the DateTime.TryParse(String, DateTime) method does not throw an exception if the conversion fails.

Esse método tenta ignorar dados não reconhecidos e analisar s completamente.This method attempts to ignore unrecognized data and parse s completely. Se s contiver uma hora mas nenhuma data, o método, por padrão, substituirá a data atual ou, se styles incluir o sinalizador NoCurrentDateDefault, ele substituirá DateTime.Date.MinValue.If s contains a time but no date, the method by default substitutes the current date or, if styles includes the NoCurrentDateDefault flag, it substitutes DateTime.Date.MinValue. Se s contiver uma data, mas não houver tempo, 12:00 meia-noite será usada como a hora padrão.If s contains a date but no time, 12:00 midnight is used as the default time. Se uma data estiver presente, mas seu componente de ano consistir de apenas dois dígitos, ele será convertido em um ano no calendário atual do provider parâmetro com base no valor da propriedade Calendar.TwoDigitYearMax.If a date is present but its year component consists of only two digits, it is converted to a year in the provider parameter's current calendar based on the value of the Calendar.TwoDigitYearMax property. Qualquer caractere de espaço em branco à esquerda, interna ou à direita em s são ignorados.Any leading, inner, or trailing white space characters in s are ignored. A data e a hora podem ficar entredas com um par de caracteres de sinal de número à esquerda e à direita (' # ', U + 0023) e podem ser enbarradas com um ou mais caracteres nulos (U + 0000).The date and time can be bracketed with a pair of leading and trailing NUMBER SIGN characters ('#', U+0023), and can be trailed with one or more NULL characters (U+0000).

Formatos válidos específicos para elementos de data e hora, bem como os nomes e símbolos usados em datas e horas, são definidos pelo parâmetro provider, que pode ser qualquer um dos seguintes:Specific valid formats for date and time elements, as well as the names and symbols used in dates and times, are defined by the provider parameter, which can be any of the following:

Se provider for null, a cultura atual será usada.If provider is null, the current culture is used.

Se s for a representação de cadeia de caracteres de um dia bissexto em um ano bissexto no calendário atual, o método analisará s com êxito.If s is the string representation of a leap day in a leap year in the current calendar, the method parses s successfully. Se s for a representação de cadeia de caracteres de um dia bissexto em um ano não bissexto no calendário atual de provider, a operação de análise falhará e o método retornará false.If s is the string representation of a leap day in a non-leap year in the current calendar of provider, the parse operation fails and the method returns false.

O parâmetro styles define a interpretação precisa da cadeia de caracteres analisada e como a operação de análise deve tratá-la.The styles parameter defines the precise interpretation of the parsed string and how the parse operation should handle it. Pode ser um ou mais membros da enumeração DateTimeStyles, conforme descrito na tabela a seguir.It can be one or more members of the DateTimeStyles enumeration, as described in the following table.

Membro DateTimeStylesDateTimeStyles member DESCRIÇÃODescription
AdjustToUniversal Analisa s e, caso necessário, converte-o em UTC.Parses s and, if necessary, converts it to UTC. Caso s inclua um deslocamento de fuso horário ou caso s não contenha informações de fuso horário, mas styles inclua o sinalizador DateTimeStyles.AssumeLocal, o método analisa a cadeia de caracteres, chama ToUniversalTime para converter o valor DateTime retornado em UTC e define a propriedade Kind como DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Caso s indique que ele representa o UTC ou caso s não contenha informações de fuso horário, mas styles inclua o sinalizador DateTimeStyles.AssumeUniversal, o método analisa a cadeia de caracteres, não executa nenhuma conversão de fuso horário no valor DateTime retornado e define a propriedade Kind a DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. Em todos os outros casos, o sinalizador não entra em vigor.In all other cases, the flag has no effect.
AllowInnerWhite Embora válido, esse valor é ignorado.Although valid, this value is ignored. O espaço em branco interno é permitido nos elementos de data e hora de s.Inner white space is permitted in the date and time elements of s.
AllowLeadingWhite Embora válido, esse valor é ignorado.Although valid, this value is ignored. O espaço em branco à esquerda é permitido nos elementos de data e hora de s.Leading white space is permitted in the date and time elements of s.
AllowTrailingWhite Embora válido, esse valor é ignorado.Although valid, this value is ignored. O espaço em branco à direita é permitido nos elementos de data e hora de s.Trailing white space is permitted in the date and time elements of s.
AllowWhiteSpaces Especifica que s pode conter espaços em branco à esquerda, interna e à direita.Specifies that s may contain leading, inner, and trailing white spaces. Esse é o comportamento padrão.This is the default behavior. Ele não pode ser substituído fornecendo um valor de enumeração de DateTimeStyles mais restritivo, como DateTimeStyles.None.It cannot be overridden by supplying a more restrictive DateTimeStyles enumeration value such as DateTimeStyles.None.
AssumeLocal Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente uma hora local.Specifies that if s lacks any time zone information, it is assumed to represent a local time. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, a propriedade Kind do valor DateTime retornado é definida como DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente o UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, o método converte o valor DateTime retornado do UTC na hora local e define a propriedade Kind como DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
None Embora válido, esse valor é ignorado.Although valid, this value is ignored.
RoundtripKind Para cadeias de caracteres que contêm informações de fuso horário, o tenta impedir a conversão de uma cadeia de caracteres de data e hora em um valor DateTime com sua propriedade Kind definida como DateTimeKind.Local.For strings that contain time zone information, tries to prevent the conversion of a date and time string to a DateTime value with its Kind property set to DateTimeKind.Local. Normalmente, essa cadeia de caracteres é criada chamando o método DateTime.ToString(String) usando os especificadores de formato "o", "r" ou "u".Typically, such a string is created by calling the DateTime.ToString(String) method using either the "o", "r", or "u" standard format specifiers.

Se s não contiver nenhuma informação de fuso horário, o método DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) retornará um valor de DateTime cuja propriedade Kind é DateTimeKind.Unspecified, a menos que um sinalizador styles indique o contrário.If s contains no time zone information, the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method returns a DateTime value whose Kind property is DateTimeKind.Unspecified unless a styles flag indicates otherwise. Se s incluir informações de fuso horário ou de deslocamento de fuso horário, o método DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) executará qualquer conversão de tempo necessária e retornará um dos seguintes:If s includes time zone or time zone offset information, the DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) method performs any necessary time conversion and returns one of the following:

Esse comportamento pode ser substituído usando o sinalizador DateTimeStyles.RoundtripKind.This behavior can be overridden by using the DateTimeStyles.RoundtripKind flag.

Analisando culturas personalizadasParsing Custom Cultures

Se você analisar uma cadeia de caracteres de data e hora gerada para uma cultura personalizada, use o método TryParseExact em vez do método TryParse para melhorar a probabilidade de que a operação de análise seja realizada com sucesso.If you parse a date and time string generated for a custom culture, use the TryParseExact method instead of the TryParse method to improve the probability that the parse operation will succeed. Uma cadeia de caracteres de data e hora de cultura personalizada pode ser complicada e difícil de analisar.A custom culture date and time string can be complicated and difficult to parse. O método TryParse tenta analisar uma cadeia de caracteres com vários padrões de análise implícitos, todos os quais podem falhar.The TryParse method attempts to parse a string with several implicit parse patterns, all of which might fail. Por outro lado, o método TryParseExact exige design explícito de um ou mais padrões de análise exatos que provavelmente serão bem-sucedidos.In contrast, the TryParseExact method requires you to explicitly designate one or more exact parse patterns that are likely to succeed.

Para obter mais informações sobre culturas personalizadas, consulte a classe System.Globalization.CultureAndRegionInfoBuilder.For more information about custom cultures, see the System.Globalization.CultureAndRegionInfoBuilder class.

Notas aos Chamadores

A formatação é influenciada pelas propriedades do objeto DateTimeFormatInfo atual, que é fornecido pelo parâmetro provider.Formatting is influenced by properties of the current DateTimeFormatInfo object, which is supplied by the provider parameter. O método TryParse pode falhar inesperadamente e retornar False se as propriedades DateSeparator atuais e TimeSeparator estiverem definidas com o mesmo valor.The TryParse method can unexpectedly fail and return False if the current DateSeparator and TimeSeparator properties are set to the same value.

Veja também

TryParse(ReadOnlySpan<Char>, DateTime)

Converte o intervalo de caracteres especificado de uma data e hora no equivalente de DateTime e retorna um valor que indica se a conversão foi bem-sucedida.Converts the specified char span of a date and time to its DateTime equivalent and returns a value that indicates whether the conversion succeeded.

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

Parâmetros

s
ReadOnlySpan<Char>

Uma cadeia de caracteres contendo uma data e hora a ser convertida.A string containing a date and time to convert.

result
DateTime

Quando esse método retorna, ele contém o valor DateTime equivalente à data e hora contida em s, caso a conversão seja bem-sucedida ou caso a conversão MinValue falhe.When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. A conversão falhará se o parâmetro s for null, for uma cadeia de caracteres vazia ("") ou não contiver uma representação de cadeia de caracteres válida de uma data e hora.The conversion fails if the s parameter is null, is an empty string (""), or does not contain a valid string representation of a date and time. Este parâmetro é passado não inicializado.This parameter is passed uninitialized.

Retornos

true caso o parâmetro s tenha sido convertido com êxito; do contrário, false.true if the s parameter was converted successfully; otherwise, false.

Aplica-se a