DateTime.Parse Método

Definição

Converte a representação da cadeia de uma data e hora para o seu DateTime equivalente.

Sobrecargas

Name Description
Parse(String)

Converte a representação em cadeia de uma data e hora para o seu DateTime equivalente, usando as convenções da cultura atual.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Divide um intervalo de caracteres num valor.

Parse(String, IFormatProvider)

Converte a representação da cadeia de uma data e hora para o seu DateTime equivalente usando informação de formato específica para cada cultura.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Converte um espaço de memória que contém a representação em cadeia de uma data e hora para o seu DateTime equivalente, utilizando informação de formato específica para cultura e um estilo de formatação.

Parse(String, IFormatProvider, DateTimeStyles)

Converte a representação em cadeia de uma data e hora para o seu DateTime equivalente, utilizando informação de formato específica da cultura e um estilo de formatação.

Exemplos

Numerosos exemplos que apelam ao DateTime.Parse método estão intercalados ao longo da secção de Observações deste artigo e na documentação das sobrecargas individuais DateTime.Parse .

Também pode descarregar um conjunto completo de exemplos DateTime.Parse, que estão incluídos num projeto Core .NET para C#.

Observações

Nesta secção:

Que método devo chamar?

Para Call
Analise uma cadeia de data e hora usando as convenções da cultura atual. Parse(String) sobrecarga
Analise uma cadeia de data e hora usando as convenções de uma cultura específica. Parse(String, IFormatProvider) sobrecarga (ver Parsing e Convenções Culturais)
Analise uma cadeia de data e hora com elementos de estilo especiais (como espaço em branco ou ausência de espaço em branco). Parse(String, IFormatProvider, DateTimeStyles) sobrecarga
Analise uma cadeia de data e hora que deve estar num formato específico. DateTime.ParseExact ou DateTime.TryParseExact
Analise uma cadeia de data e hora e faça uma conversão para UTC ou hora local. Parse(String, IFormatProvider, DateTimeStyles) sobrecarga
Analise uma cadeia de data e hora sem lidar com exceções. DateTime.TryParse método
Restaurar (ida e volta) um valor de data e hora criado por uma operação de formatação. Passe a string de formato padrão "o" ou "r" ao ToString(String) método e chame a Parse(String, IFormatProvider, DateTimeStyles) sobrecarga com DateTimeStyles.RoundtripKind
Analise uma cadeia de data e hora num formato fixo através das fronteiras das máquinas (e possivelmente culturais). DateTime.ParseExact ou DateTime.TryParseExact método

A cadeia a analisar

O Parse método tenta converter a representação da cadeia de um valor de data e hora para o seu DateTime equivalente. Tenta analisar completamente a cadeia de entrada sem lançar uma FormatException exceção. Ao usar sobrecargas que aceitam um IFormatProvider objeto, será usado para analisar StringToParse. Se tal objeto não for fornecido, CurrentCulture será usado em seu lugar.

Importante

Se a operação de análise falhar devido a um formato de string não reconhecido, o Parse método gera um FormatException, enquanto o TryParse método devolve false. Como o tratamento de exceções pode ser dispendioso, deve usar Parse quando se espera que a operação de análise sintáctica tenha sucesso, pois a fonte de entrada é confiável. TryParse é preferível quando falhas de análise são prováveis, particularmente porque uma fonte de entrada não é confiável, ou se tem valores padrão razoáveis para substituir por cadeias que não fazem parse com sucesso.

A cadeia a analisar pode assumir qualquer uma das seguintes formas:

  • Uma sequência com um componente de data e um de tempo.

  • Uma sequência com data mas sem componente temporal. Se o componente de tempo estiver ausente, o método assume meia-noite. Se o componente de data tiver um ano de dois dígitos, é convertido num ano com base no Calendar.TwoDigitYearMax calendário atual da cultura atual ou no calendário atual da cultura especificada (se usar uma sobrecarga com um argumento não nulo provider ).

  • Uma sequência com um componente de data que inclui apenas o mês e o ano, mas sem componente de dia. O método assume o primeiro dia do mês.

  • Uma sequência com um componente de data que inclui apenas o mês e o dia, mas sem o componente do ano. O método assume o ano atual.

  • Uma sequência com um componente de hora mas sem data. O método assume a data atual, a menos que chame a Parse(String, IFormatProvider, DateTimeStyles) sobrecarga e inclua DateTimeStyles.NoCurrentDateDefault no styles argumento, caso em que o método assume uma data de 1 de janeiro de 0001.

  • Uma sequência com um componente de tempo que inclui apenas a hora e um designador AM/PM, sem componente de data. O método assume a data atual e uma hora, sem minutos nem segundos. Pode alterar este comportamento chamando a Parse(String, IFormatProvider, DateTimeStyles) sobrecarga e incluindo-a DateTimeStyles.NoCurrentDateDefaultstyles no argumento, caso em que o método assume uma data de 1 de janeiro do ano 0001.

  • Uma cadeia que inclui informação de fusos horários e está em conformidade com a ISO 8601. Nos exemplos seguintes, a primeira cadeia designa o Tempo Universal Coordenado (UTC), e a segunda indica a hora num fuso horário sete horas anterior ao UTC:

    "2008-11-01T19:35:00.0000000Z" "2008-11-01T19:35:00.000000-07:00"

  • Uma cadeia que inclui o designador GMT e está em conformidade com o formato de tempo RFC 1123; Por exemplo:

    "Sáb, 01 Nov 2008 19:35:00 GMT"

  • Uma cadeia que inclui a data e a hora juntamente com a informação do deslocamento do fuso horário; Por exemplo:

    "03/01/2009 05:42:00 -5:00"

O exemplo seguinte analisa cadeias em cada um destes formatos usando as convenções de formatação da cultura atual, que neste caso é a cultura en-US:

using System;

public class Example
{
   public static void Main()
   {
      (string dateAsString, string description)[]  dateInfo = { ("08/18/2018 07:22:16", "String with a date and time component"),
                                                                ("08/18/2018", "String with a date component only"),
                                                                ("8/2018", "String with a month and year component only"),
                                                                ("8/18", "String with a month and day component only"),
                                                                ("07:22:16", "String with a time component only"),
                                                                ("7 PM", "String with an hour and AM/PM designator only"),
                                                                ("2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"),
                                                                ("2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"),
                                                                ("Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"),
                                                                ("08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ) };

      Console.WriteLine($"Today is {DateTime.Now:d}\n");

      foreach (var item in dateInfo) {
         Console.WriteLine($"{item.description + ":",-52} '{item.dateAsString}' --> {DateTime.Parse(item.dateAsString)}");
      }
   }
}
// The example displays output like the following:
//   Today is 2/22/2018
//
//   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
//   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
//   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
//   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
//   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
//   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
//   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
//   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
//   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
//   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM
module Parse6

open System

let  dateInfo = 
    [ "08/18/2018 07:22:16", "String with a date and time component"
      "08/18/2018", "String with a date component only"
      "8/2018", "String with a month and year component only"
      "8/18", "String with a month and day component only"
      "07:22:16", "String with a time component only"
      "7 PM", "String with an hour and AM/PM designator only"
      "2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"
      "2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"
      "Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"
      "08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ]

printfn $"Today is {DateTime.Now:d}\n"

for dateAsString, description in dateInfo do
    printfn $"""{description + ":",-52} '{dateAsString}' --> {DateTime.Parse(dateAsString)}"""


// The example displays output like the following:
//   Today is 2/22/2018
//
//   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
//   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
//   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
//   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
//   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
//   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
//   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
//   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
//   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
//   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM

Public Module Strings
   Public Sub Main()
      Dim dateInfo() As (dateAsString As String, description As String) = 
                     { ("08/18/2018 07:22:16", "String with a date and time component"),
                       ("08/18/2018", "String with a date component only"),
                       ("8/2018", "String with a month and year component only"),
                       ("8/18", "String with a month and day component only"),
                       ("07:22:16", "String with a time component only"),
                       ("7 PM", "String with an hour and AM/PM designator only"),
                       ("2018-08-18T07:22:16.0000000Z", "UTC string that conforms to ISO 8601"),   
                       ("2018-08-18T07:22:16.0000000-07:00", "Non-UTC string that conforms to ISO 8601"),
                       ("Sat, 18 Aug 2018 07:22:16 GMT", "String that conforms to RFC 1123"),
                       ("08/18/2018 07:22:16 -5:00", "String with date, time, and time zone information" ) }
   
      Console.WriteLine($"Today is {Date.Now:d}{vbCrLf}")
      
      For Each item in dateInfo
         Console.WriteLine($"{item.description + ":",-52} '{item.dateAsString}' --> {DateTime.Parse(item.dateAsString)}")        
      Next
   End Sub
End Module
' The example displays output like the following:
'   Today is 2/22/2018
'   
'   String with a date and time component:               '08/18/2018 07:22:16' --> 8/18/2018 7:22:16 AM
'   String with a date component only:                   '08/18/2018' --> 8/18/2018 12:00:00 AM
'   String with a month and year component only:         '8/2018' --> 8/1/2018 12:00:00 AM
'   String with a month and day component only:          '8/18' --> 8/18/2018 12:00:00 AM
'   String with a time component only:                   '07:22:16' --> 2/22/2018 7:22:16 AM
'   String with an hour and AM/PM designator only:       '7 PM' --> 2/22/2018 7:00:00 PM
'   UTC string that conforms to ISO 8601:                '2018-08-18T07:22:16.0000000Z' --> 8/18/2018 12:22:16 AM
'   Non-UTC string that conforms to ISO 8601:            '2018-08-18T07:22:16.0000000-07:00' --> 8/18/2018 7:22:16 AM
'   String that conforms to RFC 1123:                    'Sat, 18 Aug 2018 07:22:16 GMT' --> 8/18/2018 12:22:16 AM
'   String with date, time, and time zone information:   '08/18/2018 07:22:16 -5:00' --> 8/18/2018 5:22:16 AM

Se a cadeia de entrada representar um dia bissexto num ano bissexto no calendário usado pelo método de análise sintática (ver Análise sintática e convenções culturais), o Parse método analisa a cadeia com sucesso. Se a cadeia de entrada representar um dia bissexto num ano não bissexto, o método lança um FormatException.

Como o Parse método tenta analisar a representação de cadeias de uma data e hora usando as regras de formatação da cultura atual ou de uma especificada, tentar analisar uma cadeia entre diferentes culturas pode falhar. Para analisar um formato específico de data e hora em diferentes locais, use uma das sobrecargas do DateTime.ParseExact método e forneça um especificador de formato.

Análise sintática e convenções culturais

Todas as sobrecargas do Parse método são sensíveis à cultura, a menos que a cadeia a analisar (representada por na s tabela seguinte) esteja em conformidade com o padrão ISO 8601. A operação de análise sintática utiliza a informação de formatação num DateTimeFormatInfo objeto que é derivada da seguinte forma:

Importante

As eras nos calendários japoneses são baseadas no reinado do imperador e, portanto, espera-se que mudem. Por exemplo, 1º de maio de 2019 marcou o início da era Reiwa no JapaneseCalendar e JapaneseLunisolarCalendar. Essa mudança de era afeta todos os aplicativos que usam esses calendários. Para obter mais informações e determinar se seus aplicativos são afetados, consulte Manipulando uma nova era no calendário japonês no .NET. Para obter informações sobre como testar seus aplicativos em sistemas Windows para garantir sua prontidão para a mudança de era, consulte Preparar seu aplicativo para a mudança de era japonesa. Para obter recursos no .NET que oferecem suporte a calendários com várias eras e práticas recomendadas ao trabalhar com calendários que suportam várias eras, consulte Trabalhando com eras.

Se ligares E provider é A informação de formatação é derivada de
Parse(String) - A cultura atual (DateTimeFormatInfo.CurrentInfo propriedade)
Parse(String, IFormatProvider) ou Parse(String, IFormatProvider, DateTimeStyles) um DateTimeFormatInfo objeto O objeto especificado DateTimeFormatInfo
Parse(String, IFormatProvider) ou Parse(String, IFormatProvider, DateTimeStyles) null A cultura atual (DateTimeFormatInfo.CurrentInfo propriedade)
Parse(String, IFormatProvider) ou Parse(String, IFormatProvider, DateTimeStyles) um CultureInfo objeto A CultureInfo.DateTimeFormat propriedade
Parse(String, IFormatProvider) ou Parse(String, IFormatProvider, DateTimeStyles) Implementação personalizada IFormatProvider O método IFormatProvider.GetFormat

Quando a informação de formatação é derivada de um DateTimeFormatInfo objeto, a DateTimeFormatInfo.Calendar propriedade define o calendário utilizado na operação de análise sintática.

Se analisar uma cadeia de data e hora usando um DateTimeFormatInfo objeto com definições personalizadas que são diferentes das de uma cultura padrão, use o ParseExact método em vez do Parse método para melhorar as hipóteses de conversão bem-sucedida. Uma sequência de data e hora não padrão pode ser complicada e difícil de analisar. O Parse método tenta analisar uma cadeia com vários padrões implícitos de análise sintática, todos os quais podem falhar. Por outro lado, o ParseExact método requer que você designe explicitamente um ou mais padrões de análise exatos que provavelmente terão êxito. Para mais informações, consulte a secção "DateTimeFormatInfo e Dados Dinâmicos" no DateTimeFormatInfo tópico.

Importante

Note que as convenções de formatação para uma determinada cultura são dinâmicas e podem estar sujeitas a alterações. Isto significa que operações de análise que dependem das convenções de formatação da cultura padrão (atual) ou que especificam um IFormatProvider objeto que representa uma cultura diferente da cultura invariante podem falhar inesperadamente se alguma das seguintes condições ocorrer:

  • Os dados específicos da cultura mudaram entre versões maiores ou menores do .NET Framework ou como resultado de uma atualização da versão existente do .NET Framework.
  • Os dados específicos da cultura refletem as preferências do utilizador, que podem variar de máquina para máquina ou de sessão para sessão.
  • Os dados específicos da cultura representam uma cultura substituta que sobrepõe-se às definições de uma cultura padrão ou de uma cultura personalizada.

Para evitar as dificuldades na análise de dados e cadeias temporais associadas a alterações nos dados culturais, pode analisar cadeias de data e hora usando a cultura invariante, ou pode chamar o ParseExact método ou TryParseExact e especificar o formato exato da cadeia a analisar. Se estiver a serializar e desserializar dados de data e hora, pode usar as convenções de formatação da cultura invariante, ou pode serializar e desserializar o DateTime valor num formato binário.

Para mais informações, consulte a secção "Dados de cultura dinâmica" no CultureInfo tópico e a secção "Valores DateTime persistentes" no DateTime tópico.

Análise sintática e elementos de estilo

Todas Parse as sobrecargas ignoram os caracteres de espaço em branco à frente, interior ou final na cadeia de entrada (que é representada na s tabela seguinte). A data e a hora podem ser colocadas entre parchetes com um par de caracteres NUMBER SIGN iniciais e finais ("#", U+0023), e podem ser acompanhados por um ou mais caracteres NULL (U+0000).

Além disso, a Parse(String, IFormatProvider, DateTimeStyles) sobrecarga tem um styles parâmetro que consiste em um ou mais membros da DateTimeStyles enumeração. Este parâmetro define como s deve ser interpretado e como a operação de análise deve converter-se s para uma data e hora. A tabela seguinte descreve o efeito de cada DateTimeStyles elemento na operação de análise sintética.

Membro DateTimeStyles Efeito na conversão
AdjustToUniversal Analisa s e, se necessário, converte-a para UTC, da seguinte forma:

- Se s inclui um deslocamento de fuso horário, ou se s não contém informação de fuso horário mas styles inclui a AssumeLocal bandeira, o método analisa a cadeia, chama ToUniversalTime para converter o valor devolvido DateTime em UTC e define a Kind propriedade para DateTimeKind.Utc.
- Se s indica que representa o UTC, ou se s não contém informação de fuso horário mas styles inclui a AssumeUniversal bandeira, o método analisa a cadeia, não realiza conversão de fuso horário no valor devolvido DateTime e define a Kind propriedade para DateTimeKind.Utc.
- Em todos os outros casos, a bandeira não tem efeito.
AllowInnerWhite Este valor é ignorado. O espaço em branco interior é sempre permitido nos elementos de data e hora de s.
AllowLeadingWhite Este valor é ignorado. O espaço em branco inicial é sempre permitido nos elementos de data e hora de s.
AllowTrailingWhite Este valor é ignorado. O espaço em branco final é sempre permitido nos elementos de data e hora de s.
AllowWhiteSpaces Especifica que s pode conter espaços em branco internos, à esquerda e à direita. Este é o comportamento padrão. Ele não pode ser substituído fornecendo um valor de enumeração mais restritivo DateTimeStyles , como None.
AssumeLocal Especifica que, se s não houver qualquer informação de fuso horário, assume-se a hora local. A menos que o AdjustToUniversal sinalizador esteja presente, a Kind propriedade do valor retornado DateTime é definida como DateTimeKind.Local.
AssumeUniversal Especifica que, se s não houver qualquer informação de fuso horário, o UTC é assumido. A menos que o AdjustToUniversal sinalizador esteja presente, o método converte o valor retornado DateTime de UTC para a hora local e define sua Kind propriedade como DateTimeKind.Local.
None Embora válido, esse valor é ignorado.
RoundtripKind Para cadeias que contêm informação de fuso horário, tenta impedir a conversão de uma cadeia de data e hora para um DateTime valor que represente uma hora local com a sua Kind propriedade definida como DateTimeKind.Local. Normalmente, tal cadeia é criada chamando o DateTime.ToString(String) método e utilizando o especificador de formato padrão "o", "r" ou "u".

O valor de devolução e o DateTime.Kind

As DateTime.Parse sobrecargas devolvem um DateTime valor cuja Kind propriedade inclui informação de fuso horário. Pode indicar que a hora é:

Geralmente, o Parse método devolve um DateTime objeto cuja Kind propriedade é DateTimeKind.Unspecified. No entanto, o Parse método pode também realizar conversão de fuso horário e definir o valor da Kind propriedade de forma diferente, dependendo dos valores dos s parâmetros e:styles

Se Conversão de fuso horário Propriedade de tipo
s contém informações sobre fusos horários. A data e hora são convertidas para a hora no fuso horário local. DateTimeKind.Local
s contém informação sobre o fuso horário e styles inclui a AdjustToUniversal bandeira. A data e hora são convertidas para Tempo Universal Coordenado (UTC). DateTimeKind.Utc
s contém o designador do fuso horário Z ou GMT, e styles inclui a RoundtripKind bandeira. A data e a hora são interpretadas como UTC. DateTimeKind.Utc

O exemplo seguinte converte cadeias de datas que contêm informação do fuso horário para a hora no fuso horário local:

using System;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = {"2008-05-01T07:34:42-5:00",
                              "2008-05-01 7:34:42Z",
                              "Thu, 01 May 2008 07:34:42 GMT"};
      foreach (string dateString in dateStrings)
      {
         DateTime convertedDate = DateTime.Parse(dateString);
         Console.WriteLine($"Converted {dateString} to {convertedDate.Kind} time {convertedDate}");
      }
   }
}
// These calls to the DateTime.Parse method display the following output:
//  Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
//  Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
//  Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM
open System

let dateStrings = 
    [ "2008-05-01T07:34:42-5:00"
      "2008-05-01 7:34:42Z"
      "Thu, 01 May 2008 07:34:42 GMT" ]

for dateString in dateStrings do
    let convertedDate = DateTime.Parse dateString
    printfn $"Converted {dateString} to {convertedDate.Kind} time {convertedDate}"

// These calls to the DateTime.Parse method display the following output:
//  Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
//  Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
//  Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM
Module Example
   Public Sub Main()
      Dim dateStrings() As String = {"2008-05-01T07:34:42-5:00", 
                                     "2008-05-01 7:34:42Z", 
                                     "Thu, 01 May 2008 07:34:42 GMT"}
      
      For Each dateStr In dateStrings
         Dim convertedDate As Date = Date.Parse(dateStr)
         Console.WriteLine($"Converted {dateStr} to {convertedDate.Kind} time {convertedDate}")
      Next 
   End Sub
End Module
' These calls to the DateTime.Parse method display the following output:
'   Converted 2008-05-01T07:34:42-5:00 to Local time 5/1/2008 5:34:42 AM
'   Converted 2008-05-01 7:34:42Z to Local time 5/1/2008 12:34:42 AM
'   Converted Thu, 01 May 2008 07:34:42 GMT to Local time 5/1/2008 12:34:42 AM

Também pode preservar o valor da Kind propriedade de uma data e hora durante uma operação de formatação e análise usando a DateTimeStyles.RoundtripKind bandeira. O exemplo seguinte ilustra como o RoundtripKind flag afeta a operação de análise nos DateTime valores convertidos em cadeias usando o especificador de formato "o", "r" ou "u".

   string[] formattedDates = { "2008-09-15T09:30:41.7752486-07:00",
                               "2008-09-15T09:30:41.7752486Z",
                               "2008-09-15T09:30:41.7752486",
                               "2008-09-15T09:30:41.7752486-04:00",
                               "Mon, 15 Sep 2008 09:30:41 GMT" };
   foreach (string formattedDate in formattedDates)
   {
      Console.WriteLine(formattedDate);
      DateTime roundtripDate = DateTime.Parse(formattedDate, null,
                                              DateTimeStyles.RoundtripKind);
      Console.WriteLine($"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time.");

      DateTime noRoundtripDate = DateTime.Parse(formattedDate, null,
                                                DateTimeStyles.None);
      Console.WriteLine($"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time.");
   }
// The example displays the following output:
//       2008-09-15T09:30:41.7752486-07:00
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486Z
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//       2008-09-15T09:30:41.7752486-04:00
//          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//       Mon, 15 Sep 2008 09:30:41 GMT
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
let formattedDates = 
    [ "2008-09-15T09:30:41.7752486-07:00"
      "2008-09-15T09:30:41.7752486Z"
      "2008-09-15T09:30:41.7752486"
      "2008-09-15T09:30:41.7752486-04:00"
      "Mon, 15 Sep 2008 09:30:41 GMT" ]

for formattedDate in formattedDates do
    printfn $"{formattedDate}"
    let roundtripDate = DateTime.Parse(formattedDate, null, DateTimeStyles.RoundtripKind)
    printfn $"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time."

    let noRoundtripDate = DateTime.Parse(formattedDate, null, DateTimeStyles.None)
    printfn $"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time."

// The example displays the following output:
//       2008-09-15T09:30:41.7752486-07:00
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486Z
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
//       2008-09-15T09:30:41.7752486
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
//       2008-09-15T09:30:41.7752486-04:00
//          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
//       Mon, 15 Sep 2008 09:30:41 GMT
//          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
//          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
Dim formattedDates() = { "2008-09-15T09:30:41.7752486-07:00", 
                           "2008-09-15T09:30:41.7752486Z",  
                           "2008-09-15T09:30:41.7752486",  
                           "2008-09-15T09:30:41.7752486-04:00", 
                           "Mon, 15 Sep 2008 09:30:41 GMT" }
For Each formattedDate In formattedDates
   Console.WriteLine(formattedDate)
   Dim roundtripDate = DateTime.Parse(formattedDate, Nothing,  
                                      DateTimeStyles.RoundtripKind)                        
   Console.WriteLine($"   With RoundtripKind flag: {roundtripDate} {roundtripDate.Kind} time.")                                          
   Dim noRoundtripDate = DateTime.Parse(formattedDate, Nothing,                                                                                                  DateTimeStyles.None)
   Console.WriteLine($"   Without RoundtripKind flag: {noRoundtripDate} {noRoundtripDate.Kind} time.")
Next         
' The example displays the following output:
'       2008-09-15T09:30:41.7752486-07:00
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
'          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Local time.
'       2008-09-15T09:30:41.7752486Z
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
'          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.
'       2008-09-15T09:30:41.7752486
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
'          Without RoundtripKind flag: 9/15/2008 9:30:41 AM Unspecified time.
'       2008-09-15T09:30:41.7752486-04:00
'          With RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
'          Without RoundtripKind flag: 9/15/2008 6:30:41 AM Local time.
'       Mon, 15 Sep 2008 09:30:41 GMT
'          With RoundtripKind flag: 9/15/2008 9:30:41 AM Utc time.
'          Without RoundtripKind flag: 9/15/2008 2:30:41 AM Local time.

Parse(String)

Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs

Converte a representação em cadeia de uma data e hora para o seu DateTime equivalente, usando as convenções da cultura atual.

public:
 static DateTime Parse(System::String ^ s);
public static DateTime Parse(string s);
static member Parse : string -> DateTime
Public Shared Function Parse (s As String) As DateTime

Parâmetros

s
String

Uma cadeia que contém uma data e hora para converter. Consulte A cadeia para analisar para mais informações.

Devoluções

Um objeto que é equivalente à data e hora contidas em s.

Exceções

s não contém uma representação válida de uma sequência de uma data e hora.

Exemplos

O exemplo seguinte analisa a representação da cadeia de vários valores de data e hora por:

  • Usando o fornecedor de formato padrão, que fornece as convenções de formatação da cultura atual do computador usada para produzir o resultado de exemplo. O resultado deste exemplo reflete as convenções de formatação da cultura en-US.

  • Usando o valor de estilo padrão, que é AllowWhiteSpaces.

Lida com a FormatException exceção que é lançada quando o método tenta analisar a representação da string de uma data e hora usando convenções de formatação de outras culturas. Também mostra como analisar com sucesso um valor de data e hora que não utiliza as convenções de formatação da cultura atual.

using System;
using System.Globalization;

public class DateTimeParser
{
   public static void Main()
   {
      // Assume the current culture is en-US.
      // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

      // Use standard en-US date and time value
      DateTime dateValue;
      string dateString = "2/16/2008 12:15:12 PM";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Reverse month and day to conform to the fr-FR culture.
      // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
      dateString = "16/02/2008 12:15:12";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Call another overload of Parse to successfully convert string
      // formatted according to conventions of fr-FR culture.
      try {
         dateValue = DateTime.Parse(dateString, new CultureInfo("fr-FR", false));
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }

      // Parse string with date but no time component.
      dateString = "2/16/2008";
      try {
         dateValue = DateTime.Parse(dateString);
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
      }
      catch (FormatException) {
         Console.WriteLine("Unable to convert '{0}'.", dateString);
      }
   }
}
// The example displays the following output to the console:
//       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
//       Unable to convert '16/02/2008 12:15:12'.
//       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
//       '2/16/2008' converted to 2/16/2008 12:00:00 AM.
open System
open System.Globalization

[<EntryPoint>]
let main _ =
    // Assume the current culture is en-US.
    // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

    // Use standard en-US date and time value
    let dateString = "2/16/2008 12:15:12 PM"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    // Reverse month and day to conform to the fr-FR culture.
    // The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
    let dateString = "16/02/2008 12:15:12"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        Console.WriteLine("Unable to convert '{0}'.", dateString)

    // Call another overload of Parse to successfully convert string
    // formatted according to conventions of fr-FR culture.
    try
        let dateValue = DateTime.Parse(dateString, CultureInfo("fr-FR", false))
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    // Parse string with date but no time component.
    let dateString = "2/16/2008"
    try
        let dateValue = DateTime.Parse dateString
        printfn $"'{dateString}' converted to {dateValue}."
    with :? FormatException ->
        printfn $"Unable to convert '{dateString}'."

    0

// The example displays the following output to the console:
//       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
//       Unable to convert '16/02/2008 12:15:12'.
//       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
//       '2/16/2008' converted to 2/16/2008 12:00:00 AM.
Imports System.Globalization

Class DateTimeParser
   Public Shared Sub Main()
      ' Assume the current culture is en-US. 
      ' The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.

      ' Use standard en-US date and time value
      Dim dateValue As Date
      Dim dateString As String = "2/16/2008 12:15:12 PM"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
            
      ' Reverse month and day to conform to the fr-FR culture.
      ' The date is February 16, 2008, 12 hours, 15 minutes and 12 seconds.
      dateString = "16/02/2008 12:15:12"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try

      ' Call another overload of Parse to successfully convert string
      ' formatted according to conventions of fr-FR culture.      
      Try
         dateValue = Date.Parse(dateString, New CultureInfo("fr-FR", False))
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
      
      ' Parse string with date but no time component.
      dateString = "2/16/2008"
      Try
         dateValue = Date.Parse(dateString)
         Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", dateString)
      End Try
   End Sub 
End Class 
' The example displays the following output to the console:
'       '2/16/2008 12:15:12 PM' converted to 2/16/2008 12:15:12 PM.
'       Unable to convert '16/02/2008 12:15:12'.
'       '16/02/2008 12:15:12' converted to 2/16/2008 12:15:12 PM.
'       '2/16/2008' converted to 2/16/2008 12:00:00 AM.

Observações

Se s contiver informação de fuso horário, este método devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Local e converte a data e hora em s hora local. Caso contrário, não realiza conversão de fuso horário e devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Unspecified.

Esta sobrecarga tenta analisar s usando as convenções de formatação da cultura atual. A cultura atual é indicada pela CurrentCulture propriedade. Para analisar uma string usando as convenções de formatação de uma cultura específica, chame os Parse(String, IFormatProvider) ou os Parse(String, IFormatProvider, DateTimeStyles) overloads.

Esta sobrecarga tenta analisar s usando DateTimeStyles.AllowWhiteSpaces estilo.

Ver também

Aplica-se a

Parse(ReadOnlySpan<Char>, IFormatProvider)

Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs

Divide um intervalo de caracteres num valor.

public:
 static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<DateTime>::Parse;
public static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> DateTime
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As DateTime

Parâmetros

s
ReadOnlySpan<Char>

O número de personagens a analisar.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica da cultura sobre s.

Devoluções

O resultado da análise sintática s.

Implementações

Aplica-se a

Parse(String, IFormatProvider)

Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs

Converte a representação da cadeia de uma data e hora para o seu DateTime equivalente usando informação de formato específica para cada cultura.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider);
public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider) = IParsable<DateTime>::Parse;
public static DateTime Parse(string s, IFormatProvider provider);
public static DateTime Parse(string s, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> DateTime
Public Shared Function Parse (s As String, provider As IFormatProvider) As DateTime

Parâmetros

s
String

Uma cadeia que contém uma data e hora para converter. Consulte A cadeia para analisar para mais informações.

provider
IFormatProvider

Um objeto que fornece informação de formato específica da cultura sobre s. Ver Sintonia e convenções culturais

Devoluções

Um objeto que é equivalente à data e hora contidas em s conforme especificado por provider.

Implementações

Exceções

s não contém uma representação válida de uma sequência de uma data e hora.

Exemplos

O exemplo seguinte analisa um array de cadeias de datas usando as convenções das culturas en-US, fr-FRde-DE. Demonstra que as representações das cordas de uma única data podem ser interpretadas de forma diferente entre diferentes culturas.

using System;
using System.Globalization;

public class ParseDate
{
   public static void Main()
   {
      // Define cultures to be used to parse dates.
      CultureInfo[] cultures = {CultureInfo.CreateSpecificCulture("en-US"),
                                CultureInfo.CreateSpecificCulture("fr-FR"),
                                CultureInfo.CreateSpecificCulture("de-DE")};
      // Define string representations of a date to be parsed.
      string[] dateStrings = {"01/10/2009 7:34 PM",
                              "10.01.2009 19:34",
                              "10-1-2009 19:34" };
      // Parse dates using each culture.
      foreach (CultureInfo culture in cultures)
      {
         DateTime dateValue;
         Console.WriteLine("Attempted conversions using {0} culture.",
                           culture.Name);
         foreach (string dateString in dateStrings)
         {
            try {
               dateValue = DateTime.Parse(dateString, culture);
               Console.WriteLine("   Converted '{0}' to {1}.",
                                 dateString, dateValue.ToString("f", culture));
            }
            catch (FormatException) {
               Console.WriteLine("   Unable to convert '{0}' for culture {1}.",
                                 dateString, culture.Name);
            }
         }
         Console.WriteLine();
      }
   }
}
// The example displays the following output to the console:
//       Attempted conversions using en-US culture.
//          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
//          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//
//       Attempted conversions using fr-FR culture.
//          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
//          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
//          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
//
//       Attempted conversions using de-DE culture.
//          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
//          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
//          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.
open System
open System.Globalization

// Define cultures to be used to parse dates.
let cultures = 
    [ CultureInfo.CreateSpecificCulture "en-US"
      CultureInfo.CreateSpecificCulture "fr-FR"
      CultureInfo.CreateSpecificCulture "de-DE" ]

// Define string representations of a date to be parsed.
let dateStrings = 
    [ "01/10/2009 7:34 PM"
      "10.01.2009 19:34"
      "10-1-2009 19:34" ]

// Parse dates using each culture.
for culture in cultures do
    printfn $"Attempted conversions using {culture.Name} culture."
    for dateString in dateStrings do
        try
            let dateValue = DateTime.Parse(dateString, culture)
            printfn $"""   Converted '{dateString}' to {dateValue.ToString("f", culture)}."""
        with :? FormatException ->
            printfn $"   Unable to convert '{dateString}' for culture {culture.Name}." 
    printfn ""


// The example displays the following output to the console:
//       Attempted conversions using en-US culture.
//          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
//          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
//
//       Attempted conversions using fr-FR culture.
//          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
//          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
//          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
//
//       Attempted conversions using de-DE culture.
//          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
//          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
//          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.
Imports System.Globalization

Module ParseDate
   Public Sub Main()
      ' Define cultures to be used to parse dates.
      Dim cultures() As CultureInfo = {CultureInfo.CreateSpecificCulture("en-US"), _
                                       CultureInfo.CreateSpecificCulture("fr-FR"), _
                                       CultureInfo.CreateSpecificCulture("de-DE")}
      ' Define string representations of a date to be parsed.
      Dim dateStrings() As String = {"01/10/2009 7:34 PM", _
                                     "10.01.2009 19:34", _
                                     "10-1-2009 19:34" }
      ' Parse dates using each culture.
      For Each culture In cultures
         Dim dateValue As Date
         Console.WriteLine("Attempted conversions using {0} culture.", culture.Name)
         For Each dateString As String In dateStrings
            Try
               dateValue = Date.Parse(dateString, culture)
               Console.WriteLine("   Converted '{0}' to {1}.", _
                                 dateString, dateValue.ToString("f", culture))
            Catch e As FormatException
               Console.WriteLine("   Unable to convert '{0}' for culture {1}.", _
                                 dateString, culture.Name)
            End Try                                                
         Next
         Console.WriteLine()
      Next                                                                                     
   End Sub
End Module
' The example displays the following output to the console:
'       Attempted conversions using en-US culture.
'          Converted '01/10/2009 7:34 PM' to Saturday, January 10, 2009 7:34 PM.
'          Converted '10.01.2009 19:34' to Thursday, October 01, 2009 7:34 PM.
'          Converted '10-1-2009 19:34' to Thursday, October 01, 2009 7:34 PM.
'       
'       Attempted conversions using fr-FR culture.
'          Converted '01/10/2009 7:34 PM' to jeudi 1 octobre 2009 19:34.
'          Converted '10.01.2009 19:34' to samedi 10 janvier 2009 19:34.
'          Converted '10-1-2009 19:34' to samedi 10 janvier 2009 19:34.
'       
'       Attempted conversions using de-DE culture.
'          Converted '01/10/2009 7:34 PM' to Donnerstag, 1. Oktober 2009 19:34.
'          Converted '10.01.2009 19:34' to Samstag, 10. Januar 2009 19:34.
'          Converted '10-1-2009 19:34' to Samstag, 10. Januar 2009 19:34.

Observações

Se s contiver informação de fuso horário, este método devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Local e converte a data e hora em s hora local. Caso contrário, não realiza conversão de fuso horário e devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Unspecified.

Esta sobrecarga tenta analisar s usando o DateTimeStyles.AllowWhiteSpaces estilo.

Ver também

Aplica-se a

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs

Converte um espaço de memória que contém a representação em cadeia de uma data e hora para o seu DateTime equivalente, utilizando informação de formato específica para cultura e um estilo de formatação.

public static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider? provider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
public static DateTime Parse(ReadOnlySpan<char> s, IFormatProvider provider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
static member Parse : ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function Parse (s As ReadOnlySpan(Of Char), Optional provider As IFormatProvider = Nothing, Optional styles As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Parâmetros

s
ReadOnlySpan<Char>

O intervalo de memória que contém a cadeia a analisar. Consulte A cadeia para analisar para mais informações.

provider
IFormatProvider

Um objeto que fornece informação de formato específica da cultura sobre s. Ver Sintonia e convenções culturais

styles
DateTimeStyles

Uma combinação bit a bit dos valores de enumeração que indica os elementos de estilo que podem estar presentes s para que a operação de análise sintática tenha sucesso, e que define como interpretar a data analisada em relação ao fuso horário atual ou à data atual. Um valor típico a especificar é None.

Devoluções

Um objeto que é equivalente à data e hora contidas em s, conforme especificado por provider e styles.

Exceções

s não contém uma representação válida de uma sequência de uma data e hora.

styles contém uma combinação inválida de DateTimeStyles valores. Por exemplo, tanto AssumeLocal como AssumeUniversal.

Aplica-se a

Parse(String, IFormatProvider, DateTimeStyles)

Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs
Origem:
DateTime.cs

Converte a representação em cadeia de uma data e hora para o seu DateTime equivalente, utilizando informação de formato específica da cultura e um estilo de formatação.

public:
 static DateTime Parse(System::String ^ s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles);
public static DateTime Parse(string s, IFormatProvider provider, System.Globalization.DateTimeStyles styles);
public static DateTime Parse(string s, IFormatProvider? provider, System.Globalization.DateTimeStyles styles);
static member Parse : string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function Parse (s As String, provider As IFormatProvider, styles As DateTimeStyles) As DateTime

Parâmetros

s
String

Uma cadeia que contém uma data e hora para converter. Consulte A cadeia para analisar para mais informações.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica de cultura sobre s. Ver Sintonia e convenções culturais

styles
DateTimeStyles

Uma combinação bit a bit dos valores de enumeração que indica os elementos de estilo que podem estar presentes s para que a operação de análise sintática tenha sucesso, e que define como interpretar a data analisada em relação ao fuso horário atual ou à data atual. Um valor típico a especificar é None.

Devoluções

Um objeto que é equivalente à data e hora contidas em s, conforme especificado por provider e styles.

Exceções

s não contém uma representação válida de uma sequência de uma data e hora.

styles contém uma combinação inválida de DateTimeStyles valores. Por exemplo, tanto AssumeLocal como AssumeUniversal.

Exemplos

O exemplo seguinte demonstra o Parse(String, IFormatProvider, DateTimeStyles) método e mostra o valor da Kind propriedade dos valores resultantes DateTime .

using System;
using System.Globalization;

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

      // Parse a date and time with no styles.
      dateString = "03/01/2009 10:00 AM";
      culture = CultureInfo.CreateSpecificCulture("en-US");
      styles = DateTimeStyles.None;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         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;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         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;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         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";
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         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;
      try {
         result = DateTime.Parse(dateString, culture, styles);
         Console.WriteLine("{0} converted to {1} {2}.",
                           dateString, result, result.Kind.ToString());
      }
      catch (FormatException) {
         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
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        printfn $"Unable to convert {dateString} to a date and time."

    // Parse the same date and time with the AssumeLocal style.
    let styles = DateTimeStyles.AssumeLocal
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        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
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        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"
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        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
    try
        let result = DateTime.Parse(dateString, culture, styles)
        printfn $"{dateString} converted to {result} {result.Kind}."
    with :? FormatException ->
        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

Module ParseDateExample
   Public Sub Main()
      Dim dateString As String  
      Dim culture As CultureInfo
      Dim styles As DateTimeStyles 
      Dim result 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
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Parse the same date and time with the AssumeLocal style.
      styles = DateTimeStyles.AssumeLocal
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' 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
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
      
      ' Attempt to convert a string in improper ISO 8601 format.
      dateString = "03/01/2009T10:00:00-5:00"
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      

      ' 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
      Try
         result = DateTime.Parse(dateString, culture, styles)
         Console.WriteLine("{0} converted to {1} {2}.", _
                           dateString, result, result.Kind.ToString())
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
      End Try      
   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.

Observações

Este método de sobrecarga converte a data e a hora em s e define a Kind propriedade do valor devolvido DateTime da seguinte forma:

Se Conversão de fuso horário Propriedade de tipo
s não contém informação sobre o fuso horário. Nenhum. DateTimeKind.Unspecified
s contém informações sobre fusos horários. Para a hora no fuso horário local DateTimeKind.Local
s contém informação sobre o fuso horário e styles inclui a DateTimeStyles.AdjustToUniversal bandeira. Para o Tempo Universal Coordenado (UTC) DateTimeKind.Utc
s contém o designador de fuso horário Z ou GMT, e styles inclui o DateTimeStyles.RoundtripKind. Nenhum. DateTimeKind.Utc

Ver também

Aplica-se a