DateTime.Parse Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 usar?
- A cadeia a analisar
- Análise sintática e convenções culturais
- Análise sintática e elementos de estilo
- O valor de devolução e o DateTime.Kind
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
stylesargumento, 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.NoCurrentDateDefault
stylesno 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 é:
- Tempo Universal Coordenado (System.DateTimeKind.Utc).
- A hora no fuso horário local (System.DateTimeKind.Local).
- A hora num fuso horário desconhecido (System.DateTimeKind.Unspecified).
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 é null.
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
- TryParse
- CultureInfo
- DateTimeFormatInfo
Análise das Cadeias de Data e Hora na .NET Framework - Cadeias de Formatos de Data e Hora Padrão
- Cadeias de Formato de Data e Hora Personalizadas
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 é null.
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
- TryParse
- CultureInfo
- DateTimeFormatInfo
Análise das Cadeias de Data e Hora na .NET Framework - Cadeias de Formatos de Data e Hora Padrão
- Cadeias de Formato de Data e Hora Personalizadas
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 é null.
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
- TryParse
- CultureInfo
- DateTimeFormatInfo
Análise das Cadeias de Data e Hora na .NET Framework - Cadeias de Formatos de Data e Hora Padrão
- Cadeias de Formato de Data e Hora Personalizadas
- Como fazer: Valores de Data e Hora da Viagem de Ida e Volta