DateTime DateTime DateTime DateTime Struct

Definição

Representa um momento no tempo, geralmente expresso como uma data e hora do dia.Represents an instant in time, typically expressed as a date and time of day.

public value class DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System::Runtime::Serialization::ISerializable
[System.Serializable]
public struct DateTime : IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
type DateTime = struct
    interface IFormattable
    interface IConvertible
    interface ISerializable
Public Structure DateTime
Implements IComparable, IComparable(Of DateTime), IConvertible, IEquatable(Of DateTime), IFormattable, ISerializable
Herança
Atributos
Implementações

Comentários

Importante

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

Observação

Os exemplos de C# neste artigo são executados no executador de código embutido Try.NET e no playground.The C# examples in this article run in the Try.NET inline code runner and playground. Clique no botão Executar para executar um exemplo em uma janela interativa.Select the Run button to run an example in an interactive window. Ao executar o código, é possível modificá-lo e executar o código modificado clicando em Executar novamente.Once you execute the code, you can modify it and run the modified code by selecting Run again. O código modificado será executado na janela interativa ou, se a compilação falhar, a janela interativa exibirá todos as mensagens de erro do compilador C#.The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

O fuso horário local do executador de código embutido Try.NET e do playground é o Tempo Universal Coordenado ou UTC.The local time zone of the Try.NET inline code runner and playground is Coordinated Universal Time, or UTC. Isso pode afetar o comportamento e a saída dos exemplos que ilustram os tipos DateTime, DateTimeOffset e TimeZoneInfo e seus membros.This may affect the behavior and the output of examples that illustrate the DateTime, DateTimeOffset, and TimeZoneInfo types and their members.

Este artigo inclui vários exemplos que usam o DateTime tipo:This article includes several examples that use the DateTime type:

Exemplos de inicializaçãoInitialization Examples

Formatação DateTime objetos como cadeias de caracteresFormatting DateTime objects as strings

Analisando cadeias de caracteres como DateTime objetosParsing strings as DateTime objects

DateTime ResoluçãoDateTime resolution

Cultura e calendáriosCulture and calendars

PersistênciaPersistence

Esta seção contém tópicos para muitos usos comuns do DateTime struct:This section contains topics for many common uses of the DateTime struct:

O DateTime tipo de valor representa datas e horas com valores variando de 00:00:00 (meia-noite), 1 de janeiro de 0001 DC Cristã em (Era comum) por meio de 11:59:59 PM, 31 de dezembro de 9999 D.C.The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.) no calendário gregoriano.(C.E.) in the Gregorian calendar.

Valores de hora são medidos em unidades de 100 nanossegundos chamadas tiques.Time values are measured in 100-nanosecond units called ticks. Uma data específica é o número de tiques desde a meia-noite, 1º de janeiro de 0001 D.C.A particular date is the number of ticks since 12:00 midnight, January 1, 0001 A.D. (C.E.) no GregorianCalendar calendário.(C.E.) in the GregorianCalendar calendar. O número exclui tiques que seriam adicionados por segundos intercalares.The number excludes ticks that would be added by leap seconds. Por exemplo, um valor de tiques de L 31241376000000000 representa a data de sexta-feira, 01 de janeiro de 0100 meia-noite de 12:00:00.For example, a ticks value of 31241376000000000L represents the date Friday, January 01, 0100 12:00:00 midnight. Um DateTime valor é sempre expresso no contexto de um valor explícito ou calendário padrão.A DateTime value is always expressed in the context of an explicit or default calendar.

Observação

Se você estiver trabalhando com um valor de tiques que você deseja converter em algum outro intervalo de tempo, como minutos ou segundos, você deve usar o TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, ou TimeSpan.TicksPerMillisecond constante para realizar a conversão.If you are working with a ticks value that you want to convert to some other time interval, such as minutes or seconds, you should use the TimeSpan.TicksPerDay, TimeSpan.TicksPerHour, TimeSpan.TicksPerMinute, TimeSpan.TicksPerSecond, or TimeSpan.TicksPerMillisecond constant to perform the conversion. Por exemplo adicionar o número de segundos representado por um número especificado de tiques para o Second componente de um DateTime valor, você pode usar a expressão dateValue.Second + nTicks/Timespan.TicksPerSecond.For example, to add the number of seconds represented by a specified number of ticks to the Second component of a DateTime value, you can use the expression dateValue.Second + nTicks/Timespan.TicksPerSecond.

Você pode exibir o código-fonte para todo o conjunto de exemplos deste artigo em uma Visual Basic ou c# do repositório de documentos do GitHub.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

Observação

Uma alternativa para o DateTime estrutura para trabalhar com valores de data e hora em fusos horários em particular é o DateTimeOffset estrutura.An alternative to the DateTime structure for working with date and time values in particular time zones is the DateTimeOffset structure. O DateTimeOffset estrutura armazena informações de data e hora em uma particular DateTime campo e o número de minutos pelo qual que a data e hora difere do UTC em uma privada Int16 campo.The DateTimeOffset structure stores date and time information in a private DateTime field and the number of minutes by which that date and time differs from UTC in a private Int16 field. Isso torna possível para um DateTimeOffset valor para refletir a hora em um determinado fuso horário, enquanto um DateTime valor inequivocamente pode refletir somente o UTC e a hora do fuso horário local.This makes it possible for a DateTimeOffset value to reflect the time in a particular time zone, whereas a DateTime value can unambiguously reflect only UTC and the local time zone's time. Para ver uma discussão sobre quando usar o DateTime estrutura ou o DateTimeOffset estrutura ao trabalhar com valores de data e hora, consulte escolhendo entre DateTime, DateTimeOffset, TimeSpan e TimeZoneInfo.For a discussion about when to use the DateTime structure or the DateTimeOffset structure when working with date and time values, see Choosing Between DateTime, DateTimeOffset, TimeSpan, and TimeZoneInfo.

Inicializando um objeto de data e horaInitializing a DateTime object

Você pode atribuir um valor inicial para um novo DateTime valor de várias maneiras diferentes:You can assign an initial value to a new DateTime value in many different ways:

  • Chamar um construtor, deles, onde você pode especificar argumentos para valores, ou use o construtor padrão implícito.Calling a constructor, either one where you specify arguments for values, or use the implicit default constructor.
  • Atribuindo um DateTime para o valor retornado de uma propriedade ou método.Assigning a DateTime to the return value of a property or method.
  • Analisando um DateTime valor de sua representação de cadeia de caracteres.Parsing a DateTime value from its string representation.
  • Usando recursos de linguagem específicos do Visual Basic para criar uma instância de um DateTime.Using Visual Basic-specific language features to instantiate a DateTime.

Os trechos de código a seguir mostram exemplos de cada um:The following code snippets show examples of each:

Invocar construtoresInvoke Constructors

Você chamar qualquer uma das sobrecargas do DateTime construtor que especificam os elementos do valor de data e hora (por exemplo, o ano, mês e dia ou o número de tiques).You call any of the overloads of the DateTime constructor that specify elements of the date and time value (such as the year, month, and day, or the number of ticks). O código a seguir cria uma data específica usando o DateTime construtor especificando o ano, mês, dia, hora, minuto e segundo.The following code creates a specific date using the DateTime constructor specifying the year, month, day, hour, minute, and second.

Dim date1 As New Date(2008, 5, 1, 8, 30, 52)
DateTime date1 = new DateTime(2008, 5, 1, 8, 30, 52);
Console.WriteLine(date1);

Você invoca o DateTime construtor padrão implícito da estrutura quando desejar um DateTime inicializado com seu valor padrão.You invoke the DateTime structure's implicit default constructor when you want a DateTime initialized to its default value. (Para obter detalhes sobre o construtor padrão implícito de um tipo de valor, consulte tipos de valor.) Alguns compiladores também dão suporte a declarar uma DateTime valor sem atribuir explicitamente um valor a ela.(For details on the implicit default constructor of a value type, see Value Types.) Some compilers also support declaring a DateTime value without explicitly assigning a value to it. Criação de um valor sem uma inicialização explícita também resulta no valor padrão.Creating a value without an explicit initialization also results in the default value. O exemplo a seguir ilustra a DateTime construtor padrão implícito em c# e Visual Basic, bem como um DateTime declaração sem atribuição no Visual Basic.The following example illustrates the DateTime implicit default constructor in C# and Visual Basic, as well as a DateTime declaration without assignment in Visual Basic.

Dim dat1 As DateTime
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat1.Equals(Date.MinValue))

Dim dat2 As New DateTime()
' The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat2.ToString(System.Globalization.CultureInfo.InvariantCulture))
' The following method call displays True.
Console.WriteLine(dat2.Equals(Date.MinValue))
DateTime dat1 = new DateTime();
// The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
// The following method call displays True.
Console.WriteLine(dat1.Equals(DateTime.MinValue));
Atribuindo um valor computadoAssigning a computed value

Você pode atribuir o DateTime um valor de data e hora retornado por um método ou propriedade do objeto.You can assign the DateTime object a date and time value returned by a property or method. O exemplo a seguir atribui a data atual e hora, a data atual do tempo Universal Coordenado (UTC) e hora e a data atual para três novos DateTime variáveis.The following example assigns the current date and time, the current Coordinated Universal Time (UTC) date and time, and the current date to three new DateTime variables.

Dim date1 As Date = Date.Now
Dim date2 As Date = Date.UtcNow
Dim date3 As Date = Date.Today
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.UtcNow;
DateTime date3 = DateTime.Today;
Analisar uma cadeia de caracteres que representa uma data e horaParsing a string that represents a DateTime

O Parse, ParseExact, TryParse, e TryParseExact todos os métodos convertem uma cadeia de caracteres em seu equivalente valor de data e hora.The Parse, ParseExact, TryParse, and TryParseExact methods all convert a string to its equivalent date and time value. Os exemplos a seguir usam o Parse e ParseExact métodos para analisar uma cadeia de caracteres e convertê-lo para um DateTime valor.The following examples use the Parse and ParseExact methods to parse a string and convert it to a DateTime value. O segundo formato usa um formulário compatível com o ISO 8601 padrão para data e hora no formato de cadeia de caracteres que representa.The second format uses a form supported by the ISO 8601 standard for a representing date and time in string format. Essa representação padrão geralmente é usada para transferir informações de data nos serviços da web.This standard representation is often used to transfer date information in web services.

Dim dateString As String = "5/1/2008 8:30:52 AM"
Dim date1 As Date = Date.Parse(dateString,
                       System.Globalization.CultureInfo.InvariantCulture)
Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As Date = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                              System.Globalization.CultureInfo.InvariantCulture)
Console.WriteLine(dateISO8602)

string dateString = "5/1/2008 8:30:52 AM";
DateTime date1 = DateTime.Parse(dateString,
                          System.Globalization.CultureInfo.InvariantCulture);
string iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ",
                                System.Globalization.CultureInfo.InvariantCulture);

O TryParse e TryParseExact métodos indicam se uma cadeia de caracteres é uma representação válida de um DateTime de valor e, se estiver, executa a conversão.The TryParse and TryParseExact methods indicate whether a string is a valid representation of a DateTime value and, if it is, performs the conversion.

Sintaxe específica da linguagem para o Visual BasicLanguage-specific syntax for Visual Basic

A instrução de Visual Basic a seguir inicializa uma nova DateTime valor.The following Visual Basic statement initializes a new DateTime value.

Dim date1 As Date = #5/1/2008 8:30:52AM#

Valores de data e hora e suas representações de cadeia de caracteresDateTime values and their string representations

Internamente, todos os DateTime valores são representados como o número de tiques (o número de intervalos de 100 nanossegundos) que se passaram desde 12:00:00 meia-noite, 1 de janeiro de 0001.Internally, all DateTime values are represented as the number of ticks (the number of 100-nanosecond intervals) that have elapsed since 12:00:00 midnight, January 1, 0001. O valor real DateTime valor é independente da maneira em que esse valor aparece quando exibida.The actual DateTime value is independent of the way in which that value appears when displayed. A aparência de um DateTime valor é o resultado de uma operação de formatação que converte um valor em sua representação de cadeia de caracteres.The appearance of a DateTime value is the result of a formatting operation that converts a value to its string representation.

A aparência dos valores de data e hora depende da cultura, padrões internacionais, requisitos do aplicativo e preferência pessoal.The appearance of date and time values is dependent on culture, international standards, application requirements, and personal preference. O DateTime estrutura oferece flexibilidade na formatação de valores de data e hora por meio de sobrecargas de ToString.The DateTime structure offers flexibility in formatting date and time values through overloads of ToString. O padrão DateTime.ToString() método retorna a representação de cadeia de caracteres de um valor de data e hora usando Data abreviada da cultura atual e o padrão de hora completa.The default DateTime.ToString() method returns the string representation of a date and time value using the current culture's short date and long time pattern. O exemplo a seguir usa o padrão DateTime.ToString() método.The following example uses the default DateTime.ToString() method. Ele exibe a data e hora usando o padrão de hora completa e data abreviada para a cultura atual.It displays the date and time using the short date and long time pattern for the current culture. A cultura en-US é a cultura atual no computador no qual o exemplo foi executado.The en-US culture is the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString());
// For en-US culture, displays 3/1/2008 7:00:00 AM
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString())
' For en-US culture, displays 3/1/2008 7:00:00 AM

Talvez você precise formatar datas em uma cultura específica para dar suporte a cenários de web em que o servidor pode estar em uma cultura diferente do cliente.You may need to format dates in a specific culture to support web scenarios where the server may be in a different culture from the client. Você especifica a cultura usando o DateTime.ToString(IFormatProvider) método para criar o data abreviada e a representação de hora longa em uma cultura específica.You specify the culture using the DateTime.ToString(IFormatProvider) method to create the short date and long time representation in a specific culture. O exemplo a seguir usa o DateTime.ToString(IFormatProvider) método para exibir a data e hora usando o padrão de hora completa e data abreviada para a cultura fr-FR.The following example uses the DateTime.ToString(IFormatProvider) method to display the date and time using the short date and long time pattern for the fr-FR culture.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 01/03/2008 07:00:00
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 01/03/2008 07:00:00

Outros aplicativos podem exigir representações de cadeia de caracteres diferente de uma data.Other applications may require different string representations of a date. O DateTime.ToString(String) método retorna a representação de cadeia de caracteres definida por um especificador de formato padrão ou personalizado usando as convenções de formatação da cultura atual.The DateTime.ToString(String) method returns the string representation defined by a standard or custom format specifier using the formatting conventions of the current culture. O exemplo a seguir usa o DateTime.ToString(String) cultura de método para exibir a data completa e o padrão de tempo para en-US, a cultura atual no computador no qual o exemplo foi executado.The following example uses the DateTime.ToString(String) method to display the full date and time pattern for the en-US culture, the current culture on the computer on which the example was run.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F"));
// Displays Saturday, March 01, 2008 7:00:00 AM
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F"))
' Displays Saturday, March 01, 2008 7:00:00 AM

Por fim, você pode especificar a cultura e o formato usando o DateTime.ToString(String, IFormatProvider) método.Finally, you can specify both the culture and the format using the DateTime.ToString(String, IFormatProvider) method. O exemplo a seguir usa o DateTime.ToString(String, IFormatProvider) método para exibir a data completa e o padrão de tempo para a cultura fr-FR.The following example uses the DateTime.ToString(String, IFormatProvider) method to display the full date and time pattern for the fr-FR culture.

DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
Console.WriteLine(date1.ToString("F", new System.Globalization.CultureInfo("fr-FR")));
// Displays samedi 1 mars 2008 07:00:00
Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("F", New System.Globalization.CultureInfo("fr-FR")))
' Displays samedi 1 mars 2008 07:00:00

O DateTime.ToString(String) sobrecarga também pode ser usada com uma cadeia de caracteres de formato personalizado para especificar outros formatos.The DateTime.ToString(String) overload can also be used with a custom format string to specify other formats. O exemplo a seguir mostra como formatar uma cadeia de caracteres usando o ISO 8601 formato padrão geralmente é usado para serviços da web.The following example shows how to format a string using the ISO 8601 standard format often used for web services. O formato Iso 8601 não tem uma cadeia de caracteres de formato padrão correspondente.The Iso 8601 format does not have a corresponding standard format string.

[!code-csharp-interactiveSystem.DateTime.Formatting#5][!code-csharp-interactiveSystem.DateTime.Formatting#5]

Dim date1 As Date = #3/1/2008 7:00AM#
Console.WriteLine(date1.ToString("yyyyMMddTHH:mm:ssZ"))
' Displays 20080301T07:00:00Z

Para obter mais informações sobre a formatação DateTime valores, consulte padrão de data e cadeias de caracteres de formato de hora e Data personalizada e cadeias de caracteres de formato de hora.For more information about formatting DateTime values, see Standard Date and Time Format Strings and Custom Date and Time Format Strings.

A análise de valores de data e hora de cadeias de caracteresParsing DateTime values from strings

A análise converte a representação de cadeia de caracteres de uma data e hora para um DateTime valor.Parsing converts the string representation of a date and time to a DateTime value. Normalmente, cadeias de caracteres de data e hora têm dois usos diferentes em aplicativos:Typically, date and time strings have two different usages in applications:

  • Uma data e hora leva a uma variedade de formas e reflete as convenções da cultura atual ou de uma cultura específica.A date and time takes a variety of forms and reflects the conventions of either the current culture or a specific culture. Por exemplo, um aplicativo permite que um usuário cuja cultura atual é en-US, insira um valor de data como "12/15/2013" ou "15 de dezembro de 2013".For example, an application allows a user whose current culture is en-US to input a date value as "12/15/2013" or "December 15, 2013". Ele permite que um usuário cuja cultura atual é en-gb, insira um valor de data como "12/15/2013" ou "15 de dezembro de 2013."It allows a user whose current culture is en-gb to input a date value as "15/12/2013" or "15 December 2013."

  • Uma data e hora é representada em um formato predefinido.A date and time is represented in a predefined format. Por exemplo, um aplicativo serializa uma data como "20130103", independentemente da cultura na qual o aplicativo está em execução.For example, an application serializes a date as "20130103" independently of the culture on which the app is running. Um aplicativo pode exigir datas a ser inserido no formato de data abreviada da cultura atual.An application may require dates be input in the current culture's short date format.

Você usa o Parse ou TryParse método para converter uma cadeia de caracteres de um dos formatos de data e hora comuns usados por uma cultura para uma DateTime valor.You use the Parse or TryParse method to convert a string from one of the common date and time formats used by a culture to a DateTime value. O exemplo a seguir mostra como você pode usar TryParse para converter cadeias de caracteres de data em diferentes formatos específicos de cultura para uma DateTime valor.The following example shows how you can use TryParse to convert date strings in different culture-specific formats to a DateTime value. Ele altera a cultura atual para inglês (Grã-Bretanha) e chama o GetDateTimeFormats() método para gerar uma matriz de cadeias de caracteres de data e hora.It changes the current culture to English (Great Britain) and calls the GetDateTimeFormats() method to generate an array of date and time strings. Ele passa cada elemento na matriz para o TryParse método.It then passes each element in the array to the TryParse method. A saída do exemplo mostra que o método de análise não conseguiu converter cada uma das cadeias de caracteres de hora e data específicas da cultura com êxito.The output from the example shows the parsing method was able to successfully convert each of the culture-specific date and time strings.

System.Threading.Thread.CurrentThread.CurrentCulture = 
    System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");

DateTime date1 = new DateTime(2013, 6, 1, 12, 32, 30);
List<string> badFormats = new List<String>();

Console.WriteLine($"{"Date String",-37} {"Date",-19}\n");
foreach (var dateString in date1.GetDateTimeFormats())
{
    DateTime parsedDate;
    if (DateTime.TryParse(dateString, out parsedDate))
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19}");
    else
        badFormats.Add(dateString);
}

// Display strings that could not be parsed.
if (badFormats.Count > 0)
{
    Console.WriteLine("\nStrings that could not be parsed: ");
    foreach (var badFormat in badFormats)
        Console.WriteLine($"   {badFormat}");
}
// Press "Run" to see the output
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

Dim date1 As DateTime = New DateTime(2013, 6, 1, 12, 32, 30)
Dim badFormats As New List(Of String)

Console.WriteLine($"{"Date String",-37} {"Date",-19}")
Console.WriteLine()
For Each dateString As String In date1.GetDateTimeFormats()
    Dim parsedDate As DateTime
    If DateTime.TryParse(dateString, parsedDate) Then
        Console.WriteLine($"{dateString,-37} {DateTime.Parse(dateString),-19:g}")
    Else
        badFormats.Add(dateString)
    End If
Next

' Display strings that could not be parsed.
If badFormats.Count > 0 Then
    Console.WriteLine()
    Console.WriteLine("Strings that could not be parsed: ")
    For Each badFormat In badFormats
        Console.WriteLine($"   {badFormat}")
    Next
End If
' The example displays the following output:
'       Date String                           Date               
'       
'       01/06/2013                            01/06/2013 00:00:00
'       01/06/13                              01/06/2013 00:00:00
'       1/6/13                                01/06/2013 00:00:00
'       1.6.13                                01/06/2013 00:00:00
'       2013-06-01                            01/06/2013 00:00:00
'       01 June 2013                          01/06/2013 00:00:00
'       1 June 2013                           01/06/2013 00:00:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32                    01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       01 June 2013 12:32 PM                 01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32                     01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       1 June 2013 12:32 PM                  01/06/2013 12:32:00
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30                 01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       01 June 2013 12:32:30 PM              01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30                  01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       1 June 2013 12:32:30 PM               01/06/2013 12:32:30
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32                      01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32 PM                   01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32                        01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       01/06/13 12:32 PM                     01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32                          01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1/6/13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32                          01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       1.6.13 12:32 PM                       01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32                      01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       2013-06-01 12:32 PM                   01/06/2013 12:32:00
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30                   01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/2013 12:32:30 PM                01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30                     01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       01/06/13 12:32:30 PM                  01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30                       01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1/6/13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30                       01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       1.6.13 12:32:30 PM                    01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30                   01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       2013-06-01 12:32:30 PM                01/06/2013 12:32:30
'       01 June                               01/06/2013 00:00:00
'       01 June                               01/06/2013 00:00:00
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       2013-06-01T12:32:30.0000000           01/06/2013 12:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       Sat, 01 Jun 2013 12:32:30 GMT         01/06/2013 05:32:30
'       2013-06-01T12:32:30                   01/06/2013 12:32:30
'       12:32                                 22/04/2013 12:32:00
'       12:32                                 22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32 PM                              22/04/2013 12:32:00
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30                              22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       12:32:30 PM                           22/04/2013 12:32:30
'       2013-06-01 12:32:30Z                  01/06/2013 05:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 19:32:30                 01/06/2013 19:32:30
'       01 June 2013 07:32:30 PM              01/06/2013 19:32:30
'       01 June 2013 7:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 19:32:30                  01/06/2013 19:32:30
'       1 June 2013 07:32:30 PM               01/06/2013 19:32:30
'       1 June 2013 7:32:30 PM                01/06/2013 19:32:30
'       June 2013                             01/06/2013 00:00:00
'       June 2013                             01/06/2013 00:00:00

Você usa o ParseExact e TryParseExact métodos para converter uma cadeia de caracteres que deve corresponder a um formato específico ou formatos para um DateTime valor.You use the ParseExact and TryParseExact methods to convert a string that must match a particular format or formats to a DateTime value. Você pode especificar um ou mais cadeias de formato de data e hora como um parâmetro para o método de análise.You specify one or more date and time format strings as a parameter to the parsing method. O exemplo a seguir usa o TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) método para converter cadeias de caracteres que devem estar em um formato de "AAAAMMDD" ou em um formato de "HHmmss" para DateTime valores.The following example uses the TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) method to convert strings that must be either in a "yyyyMMdd" format or a "HHmmss" format to DateTime values.

string[] formats = { "yyyyMMdd", "HHmmss" };
string[] dateStrings = { "20130816", "20131608", "  20130816   ",
                   "115216", "521116", "  115216  " };
DateTime parsedDate;

foreach (var dateString in dateStrings)
{
    if (DateTime.TryParseExact(dateString, formats, null,
                               System.Globalization.DateTimeStyles.AllowWhiteSpaces |
                               System.Globalization.DateTimeStyles.AdjustToUniversal,
                               out parsedDate))
        Console.WriteLine($"{dateString} --> {parsedDate:g}");
    else
        Console.WriteLine($"Cannot convert {dateString}");
}
// The example displays the following output:
//       20130816 --> 8/16/2013 12:00 AM
//       Cannot convert 20131608
//         20130816    --> 8/16/2013 12:00 AM
//       115216 --> 4/22/2013 11:52 AM
//       Cannot convert 521116
//         115216   --> 4/22/2013 11:52 AM
Dim formats() As String = {"yyyyMMdd", "HHmmss"}
Dim dateStrings() As String = {"20130816", "20131608",
                              "  20130816   ", "115216",
                              "521116", "  115216  "}
Dim parsedDate As DateTime

For Each dateString As String In dateStrings
    If DateTime.TryParseExact(dateString, formats, Nothing,
                           DateTimeStyles.AllowWhiteSpaces Or
                           DateTimeStyles.AdjustToUniversal,
                           parsedDate) Then
        Console.WriteLine($"{dateString} --> {parsedDate:g}")
    Else
        Console.WriteLine($"Cannot convert {dateString}")
    End If
Next
' The example displays the following output:
'       20130816 --> 8/16/2013 12:00 AM
'       Cannot convert 20131608
'         20130816    --> 8/16/2013 12:00 AM
'       115216 --> 4/22/2013 11:52 AM
'       Cannot convert 521116
'         115216   --> 4/22/2013 11:52 AM

Um uso comum para ParseExact é converter uma representação de cadeia de caracteres de um serviço web, normalmente, na ISO 8601 formato padrão.One common use for ParseExact is to convert a string representation from a web service, usually in ISO 8601 standard format. O código a seguir mostra a cadeia de caracteres de formato correto para usar:The following code shows the correct format string to use:

string iso8601String = "20080501T08:30:52Z";
DateTime dateISO8602 = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", 
    System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}");
Dim iso8601String As String = "20080501T08:30:52Z"
Dim dateISO8602 As DateTime = DateTime.ParseExact(iso8601String, "yyyyMMddTHH:mm:ssZ", CultureInfo.InvariantCulture)
Console.WriteLine($"{iso8601String} --> {dateISO8602:g}")

Se uma cadeia de caracteres não pode ser analisada, o Parse e ParseExact métodos geram uma exceção.If a string cannot be parsed, the Parse and ParseExact methods throw an exception. O TryParse e TryParseExact métodos retornam um Boolean valor que indica se a conversão foi bem-sucedida ou falhou.The TryParse and TryParseExact methods return a Boolean value that indicates whether the conversion succeeded or failed. Você deve usar o TryParse ou TryParseExact métodos em cenários em que o desempenho for importante.You should use the TryParse or TryParseExact methods in scenarios where performance is important. A operação de análise de cadeias de caracteres de data e hora tende a ter uma taxa alta de falha e tratamento de exceções é caro.The parsing operation for date and time strings tends to have a high failure rate, and exception handling is expensive. Usar esses métodos se cadeias de caracteres são inseridas por usuários ou provenientes de uma fonte desconhecida.Use these methods if strings are input by users or coming from an unknown source.

Para obter mais informações sobre a análise de valores de data e hora, consulte Analisando cadeias de data e hora.For more information about parsing date and time values, see Parsing Date and Time Strings.

Valores DateTimeDateTime values

Descrições dos valores de hora no DateTime tipo normalmente são expressos usando o padrão de tempo Universal Coordenado (UTC).Descriptions of time values in the DateTime type are often expressed using the Coordinated Universal Time (UTC) standard. Tempo Universal Coordenado é o nome reconhecido internacionalmente para hora de Greenwich (GMT).Coordinated Universal Time is the internationally recognized name for Greenwich Mean Time (GMT). Tempo Universal Coordenado é o tempo conforme medido em zero graus de longitude, o ponto de origem do UTC.Coordinated Universal Time is the time as measured at zero degrees longitude, the UTC origin point. Horário de verão não é aplicável ao UTC.Daylight saving time is not applicable to UTC.

Hora local é relativo um determinado fuso horário.Local time is relative to a particular time zone. Um fuso horário é associado um deslocamento de fuso horário.A time zone is associated with a time zone offset. Um deslocamento de fuso horário é o deslocamento do fuso horário, medido em horas a partir do ponto de origem do UTC.A time zone offset is the displacement of the time zone measured in hours from the UTC origin point. Além disso, a hora local, opcionalmente, é afetada por horário de verão, que adiciona ou remove um ajuste de intervalo de tempo.In addition, local time is optionally affected by daylight saving time, which adds or subtracts a time interval adjustment. Hora local é calculada pela adição de deslocamento de fuso horário UTC e ajustando para o horário de verão se necessário.Local time is calculated by adding the time zone offset to UTC and adjusting for daylight saving time if necessary. O deslocamento de fuso horário no ponto de origem de UTC é zero.The time zone offset at the UTC origin point is zero.

Hora UTC é adequada para cálculos, comparações, armazenando as datas e hora em arquivos.UTC time is suitable for calculations, comparisons, and storing dates and time in files. Hora local é adequada para exibição nas interfaces do usuário de aplicativos da área de trabalho.Local time is appropriate for display in user interfaces of desktop applications. Aplicativos com reconhecimento de fuso horário (como muitos aplicativos Web) também precisam trabalhar com um número de outros fusos horários.Time zone-aware applications (such as many Web applications) also need to work with a number of other time zones.

Se o Kind propriedade de um DateTime objeto é DateTimeKind.Unspecified, é não especificado se a hora representada é um tempo em algum outro fuso horário, hora UTC ou hora local.If the Kind property of a DateTime object is DateTimeKind.Unspecified, it is unspecified whether the time represented is local time, UTC time, or a time in some other time zone.

Resolução de data e horaDateTime resolution

Observação

Como alternativa à execução de data e hora em DateTime valores para medir o tempo decorrido, você pode usar o Stopwatch classe.As an alternative to performing date and time arithmetic on DateTime values to measure elapsed time, you can use the Stopwatch class.

O Ticks propriedade expressa valores de data e hora em unidades de um décimo milionésimo de segundo.The Ticks property expresses date and time values in units of one ten-millionth of a second. O Millisecond propriedade retorna os milésimos de segundo em um valor de data e hora.The Millisecond property returns the thousandths of a second in a date and time value. Usando chamadas repetidas para o DateTime.Now depende da propriedade para medir o tempo decorrido no relógio do sistema.Using repeated calls to the DateTime.Now property to measure elapsed time is dependent on the system clock. O relógio do sistema em sistemas Windows 7 e Windows 8 tem uma resolução de aproximadamente 15 milissegundos.The system clock on Windows 7 and Windows 8 systems has a resolution of approximately 15 milliseconds. Essa resolução afeta a intervalos de tempo de pequenas inferior a 100 milissegundos.This resolution affects small time intervals less than 100 milliseconds.

O exemplo a seguir ilustra a dependência da data atual e os valores de tempo na resolução do relógio do sistema.The following example illustrates the dependence of current date and time values on the resolution of the system clock. No exemplo, um loop externo se repete a 20 vezes e um loop interno que serve para atrasar o loop externo.In the example, an outer loop repeats 20 times, and an inner loop serves to delay the outer loop. Se o valor do contador de loop externo é 10, uma chamada para o Thread.Sleep método introduz um atraso de cinco milissegundos.If the value of the outer loop counter is 10, a call to the Thread.Sleep method introduces a five-millisecond delay. O exemplo a seguir mostra o número de milissegundos retornado pela DateTime.Now.Milliseconds alterações de propriedade somente após a chamada para Thread.Sleep.The following example shows the number of milliseconds returned by the DateTime.Now.Milliseconds property changes only after the call to Thread.Sleep.

String output = "";
for (int ctr = 0; ctr <= 20; ctr++)
{
    output += String.Format($"{DateTime.Now.Millisecond}\n");
    // Introduce a delay loop.
    for (int delay = 0; delay <= 1000; delay++)
    { }

    if (ctr == 10)
    {
        output += "Thread.Sleep called...\n";
        System.Threading.Thread.Sleep(5);
    }
}
Console.WriteLine(output);
// Press "Run" to see the output
Dim output As String = ""
For ctr As Integer = 0 To 20
    output += Date.Now.Millisecond.ToString() + vbCrLf
    ' Introduce a delay loop.
    For delay As Integer = 0 To 1000
    Next

    If ctr = 10 Then
        output += "Thread.Sleep called..." + vbCrLf
        Thread.Sleep(5)
    End If
Next
Console.WriteLine(output)
' The example displays output like the following:
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       111
'       Thread.Sleep called...
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143
'       143

Operações DateTimeDateTime operations

Um cálculo usando uma DateTime estrutura, como Add ou Subtract, não modifica o valor da estrutura.A calculation using a DateTime structure, such as Add or Subtract, does not modify the value of the structure. Em vez disso, o cálculo retorna um novo DateTime estrutura cujo valor é o resultado do cálculo.Instead, the calculation returns a new DateTime structure whose value is the result of the calculation.

Operações de conversão entre fusos horários (tais como entre o UTC e a hora local, ou entre um fuso horário e o outro) horário de verão de levar em conta, mas as operações aritméticas e de comparação não.Conversion operations between time zones (such as between UTC and local time, or between one time zone and another) take daylight saving time into account, but arithmetic and comparison operations do not.

O DateTime estrutura em si oferece suporte limitado para converter de um fuso horário para outro.The DateTime structure itself offers limited support for converting from one time zone to another. Você pode usar o ToLocalTime método para converter UTC em hora local, ou você pode usar o ToUniversalTime método para converter da hora local em UTC.You can use the ToLocalTime method to convert UTC to local time, or you can use the ToUniversalTime method to convert from local time to UTC. No entanto, um conjunto completo de métodos de conversão de fuso horário está disponível na TimeZoneInfo classe.However, a full set of time zone conversion methods is available in the TimeZoneInfo class. Você pode converter a hora em qualquer um dos fusos horários do mundo para o horário em outro fuso horário usando esses métodos.You convert the time in any one of the world's time zones to the time in any other time zone using these methods.

Cálculos e comparações de DateTime objetos são significativos apenas se os objetos representam horas no mesmo fuso horário.Calculations and comparisons of DateTime objects are meaningful only if the objects represent times in the same time zone. Você pode usar um TimeZoneInfo objeto para representar um DateTime do valor fuso horário, embora as duas são flexíveis.You can use a TimeZoneInfo object to represent a DateTime value's time zone, although the two are loosely coupled. Um DateTime objeto não tem uma propriedade que retorna um objeto que representa o fuso horário desse valor data e hora.A DateTime object does not have a property that returns an object that represents that date and time value's time zone. O Kind propriedade indica se um DateTime representa o horário local, UTC ou não está especificado.The Kind property indicates if a DateTime represents UTC, local time, or is unspecified. Em um aplicativo com reconhecimento de fuso horário, você deve contar com algum mecanismo externo para determinar o fuso horário no qual um DateTime objeto foi criado.In a time zone-aware application, you must rely on some external mechanism to determine the time zone in which a DateTime object was created. Você pode usar uma estrutura que encapsula ambos os DateTime valor e o TimeZoneInfo objeto que representa o DateTime fuso horário de um valor.You could use a structure that wraps both the DateTime value and the TimeZoneInfo object that represents the DateTime value's time zone. Para obter detalhes sobre como usar o UTC em cálculos e comparações com DateTime valores, consulte executando operações aritméticas com datas e horas.For details on using UTC in calculations and comparisons with DateTime values, see Performing Arithmetic Operations with Dates and Times.

Cada DateTime membro usa implicitamente o calendário gregoriano para executar sua operação.Each DateTime member implicitly uses the Gregorian calendar to perform its operation. As exceções são métodos que especificam implicitamente um calendário.Exceptions are methods that implicitly specify a calendar. Elas incluem construtores que especificam um calendário, e métodos com um parâmetro derivam IFormatProvider, tais como System.Globalization.DateTimeFormatInfo.These include constructors that specify a calendar, and methods with a parameter derived from IFormatProvider, such as System.Globalization.DateTimeFormatInfo.

Operações por membros do DateTime tipo levar em detalhes da conta, como anos bissextos e o número de dias em um mês.Operations by members of the DateTime type take into account details such as leap years and the number of days in a month.

Calendários e valores de data e horaDateTime values and calendars

A biblioteca de classes do .NET Framework inclui um número de classes de calendário, que são derivados de Calendar classe.The .NET Framework Class Library includes a number of calendar classes, all of which are derived from the Calendar class. Elas são:They are:

Importante

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

Cada cultura usa um calendário padrão definido pelo seu somente leitura CultureInfo.Calendar propriedade.Each culture uses a default calendar defined by its read-only CultureInfo.Calendar property. Cada cultura pode dar suporte a um ou mais calendários definidos por seu somente leitura CultureInfo.OptionalCalendars propriedade.Each culture may support one or more calendars defined by its read-only CultureInfo.OptionalCalendars property. O calendário usado atualmente por um determinado CultureInfo objeto é definido por seu DateTimeFormatInfo.Calendar propriedade.The calendar currently used by a specific CultureInfo object is defined by its DateTimeFormatInfo.Calendar property. Ele deve ser um dos calendários encontrados no CultureInfo.OptionalCalendars matriz.It must be one of the calendars found in the CultureInfo.OptionalCalendars array.

Calendário atual de uma cultura é usado em todas as operações de formatação para aquela cultura.A culture's current calendar is used in all formatting operations for that culture. Por exemplo, o calendário padrão da cultura tailandês budista é o calendário da Era budista tailandês, que é representado pelo ThaiBuddhistCalendar classe.For example, the default calendar of the Thai Buddhist culture is the Thai Buddhist Era calendar, which is represented by the ThaiBuddhistCalendar class. Quando um CultureInfo objeto que representa a cultura budista tailandês é usado em uma data e hora a operação de formatação, o calendário da Era budista tailandês é usado por padrão.When a CultureInfo object that represents the Thai Buddhist culture is used in a date and time formatting operation, the Thai Buddhist Era calendar is used by default. O calendário gregoriano é usado somente se a cultura DateTimeFormatInfo.Calendar propriedade for alterada, como mostra o exemplo a seguir:The Gregorian calendar is used only if the culture's DateTimeFormatInfo.Calendar property is changed, as the following example shows:

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = new DateTime(2016, 5, 28);

Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim value As New DateTime(2016, 5, 28)

Console.WriteLine(value.ToString(thTH))

thTH.DateTimeFormat.Calendar = New GregorianCalendar()
Console.WriteLine(value.ToString(thTH))
' The example displays the following output:
'       28/5/2559 0:00:00
'       28/5/2016 0:00:00

Calendário atual de uma cultura também é usado em todas as operações de análise para aquela cultura, como mostra o exemplo a seguir.A culture's current calendar is also used in all parsing operations for that culture, as the following example shows.

var thTH = new System.Globalization.CultureInfo("th-TH");
var value = DateTime.Parse("28/05/2559", thTH);
Console.WriteLine(value.ToString(thTH));

thTH.DateTimeFormat.Calendar = new System.Globalization.GregorianCalendar();
Console.WriteLine(value.ToString(thTH));
// Press "Run" to see the output
Private Sub ThaiBuddhistEraParse()
    Dim thTH As New CultureInfo("th-TH")
    Dim value As DateTime = DateTime.Parse("28/5/2559", thTH)
    Console.WriteLine(value.ToString(thTH))

    thTH.DateTimeFormat.Calendar = New GregorianCalendar()
    Console.WriteLine(value.ToString(thTH))
    ' The example displays the following output:
    '       28/5/2559 0:00:00
    '       28/5/2016 0:00:00
End Sub

Você criar uma instância de um DateTime valor usando os elementos data e hora (número do ano, mês e dia) de um calendário específico chamando uma ao construtor DateTime que inclui um calendar parâmetro e passá-lo um Calendarobjeto que representa o calendário.You instantiate a DateTime value using the date and time elements (number of the year, month, and day) of a specific calendar by calling a DateTime constructor that includes a calendar parameter and passing it a Calendar object that represents that calendar. O exemplo a seguir usa os elementos de data e hora do ThaiBuddhistCalendar calendário.The following example uses the date and time elements from the ThaiBuddhistCalendar calendar.

var thTH = new System.Globalization.CultureInfo("th-TH");
var dat = new DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar);
Console.WriteLine($"Thai Buddhist era date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Gregorian date:   {dat:d}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim dat As New DateTime(2559, 5, 28, thTH.DateTimeFormat.Calendar)
Console.WriteLine("Thai Buddhist Era date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Gregorian date:   {0:d}", dat)
' The example displays the following output:
'       Thai Buddhist Era Date:  28/5/2559
'       Gregorian Date:     28/05/2016

DateTime construtores que não incluem um calendar parâmetro pressupõem que os elementos de data e hora são expressos como unidades no calendário gregoriano.DateTime constructors that do not include a calendar parameter assume that the date and time elements are expressed as units in the Gregorian calendar.

Todos os outros DateTime propriedades e métodos usam o calendário gregoriano.All other DateTime properties and methods use the Gregorian calendar. Por exemplo, o DateTime.Year propriedade retorna o ano no calendário gregoriano e o DateTime.IsLeapYear(Int32) método pressupõe que o year parâmetro é um ano no calendário gregoriano.For example, the DateTime.Year property returns the year in the Gregorian calendar, and the DateTime.IsLeapYear(Int32) method assumes that the year parameter is a year in the Gregorian calendar. Cada DateTime membro que usa o calendário gregoriano tem um membro correspondente do Calendar classe que usa um calendário específico.Each DateTime member that uses the Gregorian calendar has a corresponding member of the Calendar class that uses a specific calendar. Por exemplo, o Calendar.GetYear método retorna o ano em um calendário específico e o Calendar.IsLeapYear método interpreta o year parâmetro como um número de anos em um calendário específico.For example, the Calendar.GetYear method returns the year in a specific calendar, and the Calendar.IsLeapYear method interprets the year parameter as a year number in a specific calendar. O exemplo a seguir usa o DateTime e os membros correspondentes do ThaiBuddhistCalendar classe.The following example uses both the DateTime and the corresponding members of the ThaiBuddhistCalendar class.

var thTH = new System.Globalization.CultureInfo("th-TH");
var cal = thTH.DateTimeFormat.Calendar;
var dat = new DateTime(2559, 5, 28, cal);
Console.WriteLine("Using the Thai Buddhist Era calendar:");
Console.WriteLine($"Date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Year: {cal.GetYear(dat)}");
Console.WriteLine($"Leap year: {cal.IsLeapYear(cal.GetYear(dat))}\n");

Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Year: {dat.Year}");
Console.WriteLine($"Leap year: {DateTime.IsLeapYear(dat.Year)}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim cal As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(2559, 5, 28, cal)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine("Date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Year: {0}", cal.GetYear(dat))
Console.WriteLine("Leap year: {0}", cal.IsLeapYear(cal.GetYear(dat)))
Console.WriteLine()

Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Year: {0}", dat.Year)
Console.WriteLine("Leap year: {0}", DateTime.IsLeapYear(dat.Year))
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :   28/5/2559
'       Year: 2559
'       Leap year :   True
'
'       Using the Gregorian calendar
'       Date :   28/05/2016
'       Year: 2016
'       Leap year :   True

O DateTime estrutura inclui um DayOfWeek propriedade que retorna o dia da semana no calendário gregoriano.The DateTime structure includes a DayOfWeek property that returns the day of the week in the Gregorian calendar. Ele não inclui um membro que permite que você recupere o número da semana do ano.It does not include a member that allows you to retrieve the week number of the year. Para recuperar a semana do ano, chame o calendário individual Calendar.GetWeekOfYear método.To retrieve the week of the year, call the individual calendar's Calendar.GetWeekOfYear method. O exemplo a seguir fornece uma ilustração.The following example provides an illustration.

var thTH = new System.Globalization.CultureInfo("th-TH");
var thCalendar = thTH.DateTimeFormat.Calendar;
var dat = new DateTime(1395, 8, 18, thCalendar);
Console.WriteLine("Using the Thai Buddhist Era calendar:");
Console.WriteLine($"Date: {dat.ToString("d", thTH)}");
Console.WriteLine($"Day of Week: {thCalendar.GetDayOfWeek(dat)}");
Console.WriteLine($"Week of year: {thCalendar.GetWeekOfYear(dat, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)}\n");

var greg = new System.Globalization.GregorianCalendar();
Console.WriteLine("Using the Gregorian calendar:");
Console.WriteLine($"Date: {dat:d}");
Console.WriteLine($"Day of Week: {dat.DayOfWeek}");
Console.WriteLine($"Week of year: {greg.GetWeekOfYear(dat, System.Globalization.CalendarWeekRule.FirstDay,DayOfWeek.Sunday)}");
// Press "Run" to see the output
Dim thTH As New CultureInfo("th-TH")
Dim thCalendar As Calendar = thTH.DateTimeFormat.Calendar
Dim dat As New DateTime(1395, 8, 18, thCalendar)
Console.WriteLine("Using the Thai Buddhist Era calendar:")
Console.WriteLine("Date: {0}", dat.ToString("d", thTH))
Console.WriteLine("Day of Week: {0}", thCalendar.GetDayOfWeek(dat))
Console.WriteLine("Week of year: {0}",
                thCalendar.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                       DayOfWeek.Sunday))
Console.WriteLine()

Dim greg As Calendar = New GregorianCalendar()
Console.WriteLine("Using the Gregorian calendar:")
Console.WriteLine("Date: {0:d}", dat)
Console.WriteLine("Day of Week: {0}", dat.DayOfWeek)
Console.WriteLine("Week of year: {0}",
                 greg.GetWeekOfYear(dat, CalendarWeekRule.FirstDay,
                                    DayOfWeek.Sunday))
' The example displays the following output:
'       Using the Thai Buddhist Era calendar
'       Date :  18/8/1395
'       Day of Week: Sunday
'       Week of year: 34
'       
'       Using the Gregorian calendar
'       Date :  18/08/0852
'       Day of Week: Sunday
'       Week of year: 34

Para obter mais informações sobre datas e calendários, consulte trabalhando com calendários.For more information on dates and calendars, see Working with Calendars.

Manter valores de data e horaPersisting DateTime values

Você pode persistir DateTime valores de quatro maneiras:You can persist DateTime values in four ways:

Você deve garantir que a rotina que restaura o DateTime valores não perder os dados ou gerar uma exceção, independentemente de qual técnica você escolher.You must ensure that the routine that restores the DateTime values doesn't lose data or throw an exception regardless of which technique you choose. DateTime valores devem ser de ida e volta.DateTime values should round-trip. Ou seja, o valor original e o valor restaurado devem ser o mesmo.That is, the original value and the restored value should be the same. E se o original DateTime valor representa um único instante de tempo, ele deve identificar o mesmo ponto de tempo quando ele for restaurado.And if the original DateTime value represents a single instant of time, it should identify the same moment of time when it's restored.

Manter valores como cadeias de caracteresPersisting values as strings

Para restaurar com êxito DateTime valores mantidos como cadeias de caracteres, siga estas regras:To successfully restore DateTime values that are persisted as strings, follow these rules:

  • Verifique as mesmas suposições sobre a formatação de cultura específica quando você restaura a cadeia de caracteres, como quando você mantida.Make the same assumptions about culture-specific formatting when you restore the string as when you persisted it. Para garantir que uma cadeia de caracteres pode ser restaurada em um sistema cuja cultura atual é diferente da cultura do sistema que foi salvo no, chame o ToString sobrecarga para salvar a cadeia de caracteres usando as convenções da cultura invariável.To ensure that a string can be restored on a system whose current culture is different from the culture of the system it was saved on, call the ToString overload to save the string by using the conventions of the invariant culture. Chame o Parse(String, IFormatProvider, DateTimeStyles) ou TryParse(String, IFormatProvider, DateTimeStyles, DateTime) sobrecarga para restaurar a cadeia de caracteres usando as convenções da cultura invariável.Call the Parse(String, IFormatProvider, DateTimeStyles) or TryParse(String, IFormatProvider, DateTimeStyles, DateTime) overload to restore the string by using the conventions of the invariant culture. Nunca use o ToString(), Parse(String), ou TryParse(String, DateTime) sobrecargas, que usam as convenções da cultura do thread atual.Never use the ToString(), Parse(String), or TryParse(String, DateTime) overloads, which use the conventions of the current thread culture.

  • Se a data representa um único ponto de tempo, certifique-se de que ele representa o mesmo ponto no tempo quando ele for restaurado, mesmo em um fuso horário diferente.If the date represents a single moment of time, ensure that it represents the same moment in time when it's restored, even on a different time zone. Converter o DateTime valor para o tempo Universal Coordenado (UTC) antes de salvá-lo.Convert the DateTime value to Coordinated Universal Time (UTC) before saving it. Você também pode serializar o valor, juntamente com informações de fuso horário.You can also serialize the value along with time zone information. Para obter mais informações sobre essa abordagem, consulte dados de serialização de data e hora e fuso horário.For more information about this approach, see Serializing DateTime and time zone data.

O erro mais comuns feito ao persistir DateTime valores como cadeias de caracteres é contar com as convenções de formatação da cultura atual ou padrão.The most common error made when persisting DateTime values as strings is to rely on the formatting conventions of the default or current culture. Haverá problemas se a cultura atual é diferente quando salvar e restaurar as cadeias de caracteres.Problems arise if the current culture is different when saving and restoring the strings. O exemplo a seguir ilustra esses problemas.The following example illustrates these problems. Ele salva cinco datas usando as convenções de formatação da cultura atual, que nesse caso, é inglês (Estados Unidos).It saves five dates using the formatting conventions of the current culture, which in this case is English (United States). Ele restaura as datas usando as convenções de formatação de uma cultura diferente, que nesse caso, é inglês (Grã-Bretanha).It restores the dates using the formatting conventions of a different culture, which in this case is English (Great Britain). Como as convenções de formatação das duas culturas são diferentes, duas das datas não podem ser restauradas e as datas de três restantes são interpretadas incorretamente.Because the formatting conventions of the two cultures are different, two of the dates can't be restored, and the remaining three dates are interpreted incorrectly. Além disso, se os valores de data e hora originais representam únicos pontos no tempo, restaurado vezes estão incorretas, como informações de fuso horário serão perdidas.Also, if the original date and time values represent single moments in time, the restored times are incorrect because time zone information is lost.

public static void PersistAsLocalStrings()
{
    SaveLocalDatesAsString();
    RestoreLocalDatesFromString();
}

private static void SaveLocalDatesAsString()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToString() + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreLocalDatesFromString()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParse(inputValue, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{inputValue}'");
        }
    }
    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       Cannot parse //6/14/2014 6:32:00 AM//
//       //7/10/2014 11:49:00 PM// --> 07 October 2014 23:49
//       //1/10/2015 1:16:00 AM// --> 01 October 2015 01:16
//       Cannot parse //12/20/2014 9:45:00 PM//
//       //6/2/2014 3:14:00 PM// --> 06 February 2014 15:14
//       Restored dates...
Public Sub PersistAsLocalStrings()
    SaveDatesAsStrings()
    RestoreDatesAsStrings()
End Sub

Private Sub SaveDatesAsStrings()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToString() + If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues() As String = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParse(inputValue, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue:f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       Cannot parse '6/14/2014 6:32:00 AM'
'       '7/10/2014 11:49:00 PM' --> 07 October 2014 23:49
'       '1/10/2015 1:16:00 AM' --> 01 October 2015 01:16
'       Cannot parse '12/20/2014 9:45:00 PM'
'       '6/2/2014 3:14:00 PM' --> 06 February 2014 15:14
'       Restored dates...

A ida e volta DateTime valores com êxito, siga estas etapas:To round-trip DateTime values successfully, follow these steps:

  1. Se os valores representam únicos instantes de tempo, convertê-los da hora local em UTC ao chamar o ToUniversalTime método.If the values represent single moments of time, convert them from the local time to UTC by calling the ToUniversalTime method.
  2. Converter datas em suas representações de cadeia de caracteres chamando o ToString(String, IFormatProvider) ou String.Format(IFormatProvider, String, Object[]) de sobrecarga.Convert the dates to their string representations by calling the ToString(String, IFormatProvider) or String.Format(IFormatProvider, String, Object[]) overload. Usar as convenções de formatação da cultura invariável, especificando CultureInfo.InvariantCulture como o provider argumento.Use the formatting conventions of the invariant culture by specifying CultureInfo.InvariantCulture as the provider argument. Especifique que o valor deve ser de ida e volta, usando a cadeia de caracteres de formato padrão "O" ou "R".Specify that the value should round-trip by using the "O" or "R" standard format string.

Para restaurar o persistente DateTime valores sem perda de dados, siga estas etapas:To restore the persisted DateTime values without data loss, follow these steps:

  1. Analisar os dados por meio da chamada a ParseExact ou TryParseExact de sobrecarga.Parse the data by calling the ParseExact or TryParseExact overload. Especificar CultureInfo.InvariantCulture como o provider argumento e use o mesmo formato de padrão de cadeia de caracteres é usada para o format argumento durante a conversão.Specify CultureInfo.InvariantCulture as the provider argument, and use the same standard format string you used for the format argument during conversion. Incluir o DateTimeStyles.RoundtripKind o valor a styles argumento.Include the DateTimeStyles.RoundtripKind value in the styles argument.
  2. Se o DateTime valores representam únicos pontos no tempo, chamada de ToLocalTime método para converter a data analisada do UTC em hora local.If the DateTime values represent single moments in time, call the ToLocalTime method to convert the parsed date from UTC to local time.

O exemplo a seguir usa a cultura invariável e a cadeia de caracteres de formato padrão "O" para garantir que DateTime valores salvos e restaurados representam o mesmo ponto no tempo, independentemente do sistema, cultura ou o fuso horário dos sistemas de origem e destino.The following example uses the invariant culture and the "O" standard format string to ensure that DateTime values saved and restored represent the same moment in time regardless of the system, culture, or time zone of the source and target systems.

public static void PersistAsInvariantStrings()
{
    SaveDatesAsInvariantStrings();
    RestoreDatesAsInvariantStrings();
}

private static void SaveDatesAsInvariantStrings()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    string output = null;

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        output += dates[ctr].ToUniversalTime().ToString("O", CultureInfo.InvariantCulture)
                  + (ctr != dates.Length - 1 ? "|" : "");
    }
    StreamWriter sw = new StreamWriter(filenameTxt);
    sw.Write(output);
    sw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInvariantStrings()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine("Current Time Zone: {0}",
                      TimeZoneInfo.Local.DisplayName);
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    StreamReader sr = new StreamReader(filenameTxt);
    string[] inputValues = sr.ReadToEnd().Split(new char[] { '|' },
                                                StringSplitOptions.RemoveEmptyEntries);
    sr.Close();
    Console.WriteLine("The dates on an {0} system:",
                      Thread.CurrentThread.CurrentCulture.Name);
    foreach (var inputValue in inputValues)
    {
        DateTime dateValue;
        if (DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                              DateTimeStyles.RoundtripKind, out dateValue))
        {
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}");
        }
        else
        {
            Console.WriteLine("Cannot parse '{0}'", inputValue);
        }
    }
    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
//       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
//       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
//       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
//       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
//       Restored dates...
Public Sub PersistAsInvariantStrings()
    SaveDatesAsInvariantStrings()
    RestoreDatesAsInvariantStrings()
End Sub

Private Sub SaveDatesAsInvariantStrings()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim output As String = Nothing

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        output += dates(ctr).ToUniversalTime().ToString("O", CultureInfo.InvariantCulture) +
                                   If(ctr <> dates.Length - 1, "|", "")
    Next
    Dim sw As New StreamWriter(filenameTxt)
    sw.Write(output)
    sw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsInvariantStrings()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {0}",
                    TimeZoneInfo.Local.DisplayName)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim sr As New StreamReader(filenameTxt)
    Dim inputValues() As String = sr.ReadToEnd().Split({"|"c}, StringSplitOptions.RemoveEmptyEntries)
    sr.Close()
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each inputValue In inputValues
        Dim dateValue As Date
        If DateTime.TryParseExact(inputValue, "O", CultureInfo.InvariantCulture,
                          DateTimeStyles.RoundtripKind, dateValue) Then
            Console.WriteLine($"'{inputValue}' --> {dateValue.ToLocalTime():f}")
        Else
            Console.WriteLine($"Cannot parse '{inputValue}'")
        End If
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       '2014-06-14T13:32:00.0000000Z' --> 14 June 2014 14:32
'       '2014-07-11T06:49:00.0000000Z' --> 11 July 2014 07:49
'       '2015-01-10T09:16:00.0000000Z' --> 10 January 2015 09:16
'       '2014-12-21T05:45:00.0000000Z' --> 21 December 2014 05:45
'       '2014-06-02T22:14:00.0000000Z' --> 02 June 2014 23:14
'       Restored dates...
Manter valores como inteirosPersisting values as integers

Você pode manter uma data e hora como um Int64 valor que representa um número de tiques.You can persist a date and time as an Int64 value that represents a number of ticks. Nesse caso, você não deve considerar a cultura dos sistemas de DateTime valores são mantidos e restaurados em.In this case, you don't have to consider the culture of the systems the DateTime values are persisted and restored on.

Para manter um DateTime valor como um inteiro:To persist a DateTime value as an integer:

  • Se o DateTime valores representam únicos pontos no tempo, convertê-los em UTC ao chamar o ToUniversalTime método.If the DateTime values represent single moments in time, convert them to UTC by calling the ToUniversalTime method.
  • Recuperar o número de tiques representado pela DateTime o valor da sua Ticks propriedade.Retrieve the number of ticks represented by the DateTime value from its Ticks property.

Para restaurar um DateTime valor tiver sido persistida como um inteiro:To restore a DateTime value that has been persisted as an integer:

  1. Criar um novo DateTime objeto, passando a Int64 valor para o DateTime(Int64) construtor.Instantiate a new DateTime object by passing the Int64 value to the DateTime(Int64) constructor.
  2. Se o DateTime valor representa um único ponto no tempo, converter de UTC para a hora local chamando o ToLocalTime método.If the DateTime value represents a single moment in time, convert it from UTC to the local time by calling the ToLocalTime method.

O exemplo a seguir persiste uma matriz de DateTime valores como inteiros em um sistema nos EUA Fuso horário do Pacífico.The following example persists an array of DateTime values as integers on a system in the U.S. Pacific Time zone. Ele restaura-lo em um sistema no fuso UTC.It restores it on a system in the UTC zone. O arquivo que contém os inteiros inclui um Int32 valor que indica o número total de Int64 valores que o seguem imediatamente.The file that contains the integers includes an Int32 value that indicates the total number of Int64 values that immediately follow it.

public static void PersistAsIntegers()
{
    SaveDatesAsInts();
    RestoreDatesAsInts();
}

private static void SaveDatesAsInts()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    long[] ticks = new long[dates.Length];
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        ticks[ctr] = dates[ctr].ToUniversalTime().Ticks;
    }
    FileStream fs = new FileStream(filenameInts, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(ticks.Length);
    foreach (var tick in ticks)
        bw.Write(tick);

    bw.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesAsInts()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    FileStream fs = new FileStream(filenameInts, FileMode.Open);
    BinaryReader br = new BinaryReader(fs);
    int items;
    DateTime[] dates;

    try
    {
        items = br.ReadInt32();
        dates = new DateTime[items];

        for (int ctr = 0; ctr < items; ctr++)
        {
            long ticks = br.ReadInt64();
            dates[ctr] = new DateTime(ticks).ToLocalTime();
        }
    }
    catch (EndOfStreamException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    catch (IOException)
    {
        Console.WriteLine("Unspecified I/O error. Unable to restore data...");
        return;
    }
    // Thrown during array initialization.
    catch (OutOfMemoryException)
    {
        Console.WriteLine("File corruption detected. Unable to restore data...");
        return;
    }
    finally
    {
        br.Close();
    }

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToString("f"));

    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
//       The dates on an en-GB system:
//       14 June 2014 14:32
//       11 July 2014 07:49
//       10 January 2015 09:16
//       21 December 2014 05:45
//       02 June 2014 23:14
//       Restored dates...
Public Sub PersistAsIntegers()
    SaveDatesAsIntegers()
    RestoreDatesAsIntegers()
End Sub

Private Sub SaveDatesAsIntegers()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim ticks(dates.Length - 1) As Long
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        ticks(ctr) = dates(ctr).ToUniversalTime().Ticks
    Next
    Dim fs As New FileStream(filenameInts, FileMode.Create)
    Dim bw As New BinaryWriter(fs)
    bw.Write(ticks.Length)
    For Each tick In ticks
        bw.Write(tick)
    Next
    bw.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesAsIntegers()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")
    Dim fs As New FileStream(filenameInts, FileMode.Open)
    Dim br As New BinaryReader(fs)
    Dim items As Integer
    Dim dates() As DateTime

    Try
        items = br.ReadInt32()
        ReDim dates(items - 1)

        For ctr As Integer = 0 To items - 1
            Dim ticks As Long = br.ReadInt64()
            dates(ctr) = New DateTime(ticks).ToLocalTime()
        Next
    Catch e As EndOfStreamException
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Catch e As IOException
        Console.WriteLine("Unspecified I/O error. Unable to restore data...")
        Exit Sub
    Catch e As OutOfMemoryException     'Thrown in array initialization.
        Console.WriteLine("File corruption detected. Unable to restore data...")
        Exit Sub
    Finally
        br.Close()
    End Try

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC) Dublin, Edinburgh, Lisbon, London
'       The dates on an en-GB system:
'       14 June 2014 14:32
'       11 July 2014 07:49
'       10 January 2015 09:16
'       21 December 2014 05:45
'       02 June 2014 23:14
'       Restored dates...

Serializar os valores de data e horaSerializing DateTime values

Você pode persistir DateTime valores por meio de serialização para um fluxo ou arquivo e, em seguida, a restauração-los por meio de desserialização.You can persist DateTime values through serialization to a stream or file, and then restore them through deserialization. DateTime dados são serializados em algum formato de objeto especificado.DateTime data is serialized in some specified object format. Os objetos são restaurados quando eles são desserializados.The objects are restored when they are deserialized. Um formatador ou o serializador, como XmlSerializer ou BinaryFormatter, manipula o processo de serialização e desserialização.A formatter or serializer, such as XmlSerializer or BinaryFormatter, handles the process of serialization and deserialization. Para obter mais informações sobre a serialização e os tipos de serialização com suporte pelo .NET Framework, consulte serialização.For more information about serialization and the types of serialization supported by the .NET Framework, see Serialization.

O exemplo a seguir usa o XmlSerializer classe para serializar e desserializar DateTime valores.The following example uses the XmlSerializer class to serialize and deserialize DateTime values. Os valores representam todos os dias do ano bissexto no século XXI.The values represent all leap year days in the twenty-first century. A saída representa o resultado se o exemplo é executado em um sistema cuja cultura atual seja inglês (Grã-Bretanha).The output represents the result if the example is run on a system whose current culture is English (Great Britain). Porque você já desserializado a DateTime objeto propriamente dito, o código não precisa lidar com diferenças culturais em formatos de data e hora.Because you've deserialized the DateTime object itself, the code doesn't have to handle cultural differences in date and time formats.

public static void PersistAsXML()
{
    // Serialize the data.
    List<DateTime> leapYears = new List<DateTime>();
    for (int year = 2000; year <= 2100; year += 4)
    {
        if (DateTime.IsLeapYear(year))
            leapYears.Add(new DateTime(year, 2, 29));
    }
    DateTime[] dateArray = leapYears.ToArray();

    XmlSerializer serializer = new XmlSerializer(dateArray.GetType());
    TextWriter sw = new StreamWriter(filenameXml);

    try
    {
        serializer.Serialize(sw, dateArray);
    }
    catch (InvalidOperationException e)
    {
        Console.WriteLine(e.InnerException.Message);
    }
    finally
    {
        if (sw != null) sw.Close();
    }

    // Deserialize the data.
    DateTime[] deserializedDates;
    using (FileStream fs = new FileStream(filenameXml, FileMode.Open))
    {
        deserializedDates = (DateTime[])serializer.Deserialize(fs);
    }

    // Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    int nItems = 0;
    foreach (var dat in deserializedDates)
    {
        Console.Write($"   {dat:d}     ");
        nItems++;
        if (nItems % 5 == 0)
            Console.WriteLine();
    }
}
// The example displays the following output:
//    Leap year days from 2000-2100 on an en-GB system:
//       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
//       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
//       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
//       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
//       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096
Public Sub PersistAsXml()
    ' Serialize the data.
    Dim leapYears As New List(Of DateTime)()
    For year As Integer = 2000 To 2100 Step 4
        If Date.IsLeapYear(year) Then
            leapYears.Add(New Date(year, 2, 29))
        End If
    Next
    Dim dateArray() As DateTime = leapYears.ToArray()

    Dim serializer As New XmlSerializer(dateArray.GetType())
    Dim sw As TextWriter = New StreamWriter(filenameXml)

    Try
        serializer.Serialize(sw, dateArray)
    Catch e As InvalidOperationException
        Console.WriteLine(e.InnerException.Message)
    Finally
        If sw IsNot Nothing Then sw.Close()
    End Try

    ' Deserialize the data.
    Dim deserializedDates() As Date
    Using fs As New FileStream(filenameXml, FileMode.Open)
        deserializedDates = CType(serializer.Deserialize(fs), Date())
    End Using

    ' Display the dates.
    Console.WriteLine($"Leap year days from 2000-2100 on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    Dim nItems As Integer
    For Each dat In deserializedDates
        Console.Write($"   {dat:d}     ")
        nItems += 1
        If nItems Mod 5 = 0 Then Console.WriteLine()
    Next
End Sub
' The example displays the following output:
'    Leap year days from 2000-2100 on an en-GB system:
'       29/02/2000       29/02/2004       29/02/2008       29/02/2012       29/02/2016
'       29/02/2020       29/02/2024       29/02/2028       29/02/2032       29/02/2036
'       29/02/2040       29/02/2044       29/02/2048       29/02/2052       29/02/2056
'       29/02/2060       29/02/2064       29/02/2068       29/02/2072       29/02/2076
'       29/02/2080       29/02/2084       29/02/2088       29/02/2092       29/02/2096

O exemplo anterior não inclui informações de tempo.The previous example doesn't include time information. Se um DateTime valor representa um momento específico e é expresso como uma hora local, converter da hora local para UTC antes de serializá-lo chamando o ToUniversalTime método.If a DateTime value represents a moment in time and is expressed as a local time, convert it from local time to UTC before serializing it by calling the ToUniversalTime method. Depois que você desserializá-lo, convertê-lo do UTC em hora local chamando o ToLocalTime método.After you deserialize it, convert it from UTC to local time by calling the ToLocalTime method. O exemplo a seguir usa o BinaryFormatter classe para serializar DateTime dados em um sistema nos EUA Fuso horário padrão do Pacífico e desserializá-lo em um sistema nos EUA Zona padrão Central.The following example uses the BinaryFormatter class to serialize DateTime data on a system in the U.S. Pacific Standard Time zone and to deserialize it on a system in the U.S. Central Standard zone.

public static void PersistBinary()
{
    SaveDatesBinary();
    RestoreDatesBinary();
}

private static void SaveDatesBinary()
{
    DateTime[] dates = { new DateTime(2014, 6, 14, 6, 32, 0),
                   new DateTime(2014, 7, 10, 23, 49, 0),
                   new DateTime(2015, 1, 10, 1, 16, 0),
                   new DateTime(2014, 12, 20, 21, 45, 0),
                   new DateTime(2014, 6, 2, 15, 14, 0) };
    FileStream fs = new FileStream(filenameBin, FileMode.Create);
    BinaryFormatter bin = new BinaryFormatter();

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    for (int ctr = 0; ctr < dates.Length; ctr++)
    {
        Console.WriteLine(dates[ctr].ToString("f"));
        dates[ctr] = dates[ctr].ToUniversalTime();
    }
    bin.Serialize(fs, dates);
    fs.Close();
    Console.WriteLine("Saved dates...");
}

private static void RestoreDatesBinary()
{
    TimeZoneInfo.ClearCachedData();
    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

    FileStream fs = new FileStream(filenameBin, FileMode.Open);
    BinaryFormatter bin = new BinaryFormatter();
    DateTime[] dates = (DateTime[])bin.Deserialize(fs);
    fs.Close();

    Console.WriteLine($"The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:");
    foreach (var value in dates)
        Console.WriteLine(value.ToLocalTime().ToString("f"));

    Console.WriteLine("Restored dates...");
}
// When saved on an en-US system, the example displays the following output:
//       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
//       The dates on an en-US system:
//       Saturday, June 14, 2014 6:32 AM
//       Thursday, July 10, 2014 11:49 PM
//       Saturday, January 10, 2015 1:16 AM
//       Saturday, December 20, 2014 9:45 PM
//       Monday, June 02, 2014 3:14 PM
//       Saved dates...
//
// When restored on an en-GB system, the example displays the following output:
//       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
//       The dates on an en-GB system:
//       14 June 2014 08:32
//       11 July 2014 01:49
//       10 January 2015 03:16
//       20 December 2014 23:45
//       02 June 2014 17:14
//       Restored dates...
Public Sub PersistBinary()
    SaveDatesBinary()
    RestoreDatesBinary()
End Sub

Private Sub SaveDatesBinary()
    Dim dates() As Date = {#6/14/2014 6:32AM#, #7/10/2014 11:49PM#,
                          #1/10/2015 1:16AM#, #12/20/2014 9:45PM#,
                          #6/2/2014 3:14PM#}
    Dim fs As New FileStream(filenameBin, FileMode.Create)
    Dim bin As New BinaryFormatter()

    Console.WriteLine($"Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For ctr As Integer = 0 To dates.Length - 1
        Console.WriteLine(dates(ctr).ToString("f"))
        dates(ctr) = dates(ctr).ToUniversalTime()
    Next
    bin.Serialize(fs, dates)
    fs.Close()
    Console.WriteLine("Saved dates...")
End Sub

Private Sub RestoreDatesBinary()
    TimeZoneInfo.ClearCachedData()
    Console.WriteLine("Current Time Zone: {TimeZoneInfo.Local.DisplayName}")
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

    Dim fs As New FileStream(filenameBin, FileMode.Open)
    Dim bin As New BinaryFormatter()
    Dim dates() As DateTime = DirectCast(bin.Deserialize(fs), Date())
    fs.Close()

    Console.WriteLine("The dates on an {Thread.CurrentThread.CurrentCulture.Name} system:")
    For Each value In dates
        Console.WriteLine(value.ToLocalTime().ToString("f"))
    Next
    Console.WriteLine("Restored dates...")
End Sub
' When saved on an en-US system, the example displays the following output:
'       Current Time Zone: (UTC-08:00) Pacific Time (US & Canada)
'       The dates on an en-US system:
'       Saturday, June 14, 2014 6:32 AM
'       Thursday, July 10, 2014 11:49 PM
'       Saturday, January 10, 2015 1:16 AM
'       Saturday, December 20, 2014 9:45 PM
'       Monday, June 02, 2014 3:14 PM
'       Saved dates...
'
' When restored on an en-GB system, the example displays the following output:
'       Current Time Zone: (UTC-6:00) Central Time (US & Canada)
'       The dates on an en-GB system:
'       14 June 2014 08:32
'       11 July 2014 01:49
'       10 January 2015 03:16
'       20 December 2014 11:45
'       02 June 2014 17:14
'       Restored dates...

Serialização de dados de data e hora e fuso horárioSerializing DateTime and time zone data

Todos os exemplos anteriores supõe-se que DateTime valores são expressos como horários locais.The previous examples all assumed that DateTime values are expressed as local times. O código convertido os valores entre o UTC e a hora local para que eles refletem o mesmo ponto no tempo em sistemas de origem e destino.The code converted the values between UTC and local time so they reflect the same moment in time on the source and target systems. DateTime valores também podem refletir momentos no tempo em um fuso horário diferente de local e o UTC.DateTime values may also reflect moments in time in a time zone other than local and UTC. Porque o DateTime estrutura não é o reconhecimento de fuso horário, você precisa serializar a ambos os DateTime valor e o TimeZoneInfo objeto que representa seu fuso horário.Because the DateTime structure is not time zone-aware, you have to serialize both the DateTime value and the TimeZoneInfo object that represents its time zone. Criar um tipo cujos campos incluem ambos o DateTime valor e seu fuso horário.Create a type whose fields include both the DateTime value and its time zone. O exemplo a seguir define uma DateWithTimeZone estrutura.The following example defines a DateWithTimeZone structure.

using System;

namespace DateTimeExtensions
{
    [Serializable]
    public struct DateWithTimeZone
    {
        private TimeZoneInfo tz;
        private DateTime dt;

        public DateWithTimeZone(DateTime dateValue, TimeZoneInfo timeZone)
        {
            dt = dateValue;
            if (timeZone == null)
                tz = TimeZoneInfo.Local;
            else
                tz = timeZone;
        }

        public TimeZoneInfo TimeZone
        {
            get { return (tz); }
            set { tz = value; }
        }

        public DateTime DateTime
        {
            get { return (dt); }
            set { dt = value; }
        }
    }
}
Namespace DateTimeExtensions
    <Serializable> Public Structure DateWithTimeZone
        Private tz As TimeZoneInfo
        Private dt As DateTime

        Public Sub New(dateValue As DateTime, timeZone As TimeZoneInfo)
            dt = dateValue
            If timeZone Is Nothing Then
                tz = TimeZoneInfo.Local
            Else
                tz = timeZone
            End If
        End Sub

        Public Property TimeZone As TimeZoneInfo
            Get
                Return tz
            End Get
            Set
                tz = Value
            End Set
        End Property

        Public Property DateTime As Date
            Get
                Return dt
            End Get
            Set
                dt = Value
            End Set
        End Property
    End Structure
End Namespace

Importante

O DateWithTimeZone estrutura é usada nos próximos dois exemplos, qual serializar e desserializar uma matriz de DateWithTimeZone objetos.The DateWithTimeZone structure is used in the next two examples, which serialize and deserialize an array of DateWithTimeZone objects. Você pode exibir o código-fonte para todo o conjunto de exemplos deste artigo em uma Visual Basic ou c# do repositório de documentos do GitHub.You can view the source for the entire set of examples from this article in either Visual Basic or C# from the docs repository on GitHub.

Usando o DateWithTimeZone estrutura, você pode persistir data e hora junto com informações de fuso horário.By using the DateWithTimeZone structure, you can then persist date and time along with time zone information. O exemplo a seguir usa o BinaryFormatter classe para serializar uma matriz de DateWithTimeZone objetos.The following example uses the BinaryFormatter class to serialize an array of DateWithTimeZone objects.

public static void SaveDateWithTimeZone()
{
    DateWithTimeZone[] dates = { new DateWithTimeZone(new DateTime(2014, 8, 9, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 15, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 22, 19, 30, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                          new DateWithTimeZone(new DateTime(2014, 8, 28, 19, 0, 0),
                              TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")) };
    FileStream fs = new FileStream(@".\Schedule.bin", FileMode.Create);
    BinaryFormatter formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, dates);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Serialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub SaveDateWithTimeZone()
    Dim dates() As DateWithTimeZone = {New DateWithTimeZone(#8/9/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/15/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")),
                                  New DateWithTimeZone(#8/22/2014 7:30PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")),
                                  New DateWithTimeZone(#8/28/2014 7:00PM#,
                                      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))}
    Dim fs As New FileStream(".\Schedule.bin", FileMode.Create)
    Dim formatter As New BinaryFormatter()
    Try
        formatter.Serialize(fs, dates)
    Catch e As SerializationException
        Console.WriteLine($"Serialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
    ' Display dates.
    For Each dateInfo In dates
        Dim tz As TimeZoneInfo = dateInfo.TimeZone
        Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
    Next
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

O exemplo a seguir, em seguida, chama o BinaryFormatter.Deserialize método para desserializá-lo.The following example then calls the BinaryFormatter.Deserialize method to deserialize it.

public static void RestoreDateWithTimeZone()
{
    const string filename = @".\Schedule.bin";
    FileStream fs;
    if (File.Exists(filename))
        fs = new FileStream(filename, FileMode.Open);
    else
    {
        Console.WriteLine("Unable to find file to deserialize.");
        return;
    }

    BinaryFormatter formatter = new BinaryFormatter();
    DateWithTimeZone[] dates;
    try
    {
        dates = (DateWithTimeZone[])formatter.Deserialize(fs);
        // Display dates.
        foreach (var date in dates)
        {
            TimeZoneInfo tz = date.TimeZone;
            Console.WriteLine($"{ date.DateTime} {(tz.IsDaylightSavingTime(date.DateTime) ? tz.DaylightName : tz.StandardName)}");
        }
    }
    catch (SerializationException e)
    {
        Console.WriteLine($"Deserialization failed. Reason: {e.Message}");
    }
    finally
    {
        if (fs != null) fs.Close();
    }
}
// The example displays the following output:
//       8/9/2014 7:30:00 PM Eastern Daylight Time
//       8/15/2014 7:00:00 PM Pacific Daylight Time
//       8/22/2014 7:30:00 PM Eastern Daylight Time
//       8/28/2014 7:00:00 PM Eastern Daylight Time
Public Sub RestoreDateWithTimeZone()
    Dim fs As FileStream
    If File.Exists(filename) Then
        fs = New FileStream(filename, FileMode.Open)
    Else
        Console.WriteLine("Unable to find file to deserialize.")
        Exit Sub
    End If

    Dim formatter As New BinaryFormatter()
    Dim dates() As DateWithTimeZone = Nothing
    Try
        dates = DirectCast(formatter.Deserialize(fs), DateWithTimeZone())
        ' Display dates.
        For Each dateInfo In dates
            Dim tz As TimeZoneInfo = dateInfo.TimeZone
            Console.WriteLine($"{dateInfo.DateTime} {If(tz.IsDaylightSavingTime(dateInfo.DateTime), tz.DaylightName, tz.StandardName)}")
        Next
    Catch e As SerializationException
        Console.WriteLine("Deserialization failed. Reason: {e.Message}")
    Finally
        If fs IsNot Nothing Then fs.Close()
    End Try
End Sub
' The example displays the following output:
'       8/9/2014 7:30:00 PM Eastern Daylight Time
'       8/15/2014 7:00:00 PM Pacific Daylight Time
'       8/22/2014 7:30:00 PM Eastern Daylight Time
'       8/28/2014 7:00:00 PM Eastern Daylight Time

DateTime x TimeSpanDateTime vs. TimeSpan

O DateTime e TimeSpan tipos de valor são diferentes em que um DateTime representa um momento no tempo, enquanto um TimeSpan representa um intervalo de tempo.The DateTime and TimeSpan value types differ in that a DateTime represents an instant in time whereas a TimeSpan represents a time interval. Você pode subtrair uma instância do DateTime de outro para obter um TimeSpan objeto que representa o intervalo de tempo entre eles.You can subtract one instance of DateTime from another to obtain a TimeSpan object that represents the time interval between them. Ou você poderia adicionar um positivo TimeSpan atual DateTime para obter um DateTime valor que representa uma data futura.Or you could add a positive TimeSpan to the current DateTime to obtain a DateTime value that represents a future date.

Você pode adicionar ou subtrair um intervalo de tempo de um DateTime objeto.You can add or subtract a time interval from a DateTime object. Intervalos de tempo podem ser positivo ou negativo, e eles podem ser expressos em unidades, como tiques, segundos, ou como um TimeSpan objeto.Time intervals can be negative or positive, and they can be expressed in units such as ticks, seconds, or as a TimeSpan object.

Comparação de igualdade dentro da tolerânciaComparing for equality within tolerance

Comparações de igualdade para DateTime valores são exatos.Equality comparisons for DateTime values are exact. Isso significa que dois valores devem ser expresso como o mesmo número de tiques a serem considerados iguais.That means two values must be expressed as the same number of ticks to be considered equal. Que a precisão é geralmente desnecessário ou até mesmo incorreto para muitos aplicativos.That precision is often unnecessary or even incorrect for many applications. Muitas vezes, você deseja testar se DateTime objetos estão aproximadamente igual.Often, you want to test if DateTime objects are roughly equal.

O exemplo a seguir demonstra como comparar aproximadamente equivalente DateTime valores.The following example demonstrates how to compare roughly equivalent DateTime values. Ele aceita uma pequena margem de diferença quando declará-las igual.It accepts a small margin of difference when declaring them equal.

[!code-csharpSystem.DateTime.Comparisons#1][!code-csharpSystem.DateTime.Comparisons#1]

Public Shared Function RoughlyEquals(time As DateTime, timeWithWindow As DateTime,
                             windowInSeconds As Integer,
                             frequencyInSeconds As Integer) As Boolean
    Dim delta As Long = (timeWithWindow.Subtract(time)).TotalSeconds _
                                            Mod frequencyInSeconds

    If delta > windowInSeconds Then
        delta = frequencyInSeconds - delta
    End If

    Return Math.Abs(delta) < windowInSeconds
End Function

Public Shared Sub TestRoughlyEquals()
    Dim window As Integer = 10
    Dim freq As Integer = 60 * 60 * 2 ' 2 hours;
    Dim d1 As DateTime = DateTime.Now

    Dim d2 As DateTime = d1.AddSeconds((2 * window))
    Dim d3 As DateTime = d1.AddSeconds((-2 * window))
    Dim d4 As DateTime = d1.AddSeconds((window / 2))
    Dim d5 As DateTime = d1.AddSeconds((-window / 2))

    Dim d6 As DateTime = d1.AddHours(2).AddSeconds((2 * window))
    Dim d7 As DateTime = d1.AddHours(2).AddSeconds((-2 * window))
    Dim d8 As DateTime = d1.AddHours(2).AddSeconds((window / 2))
    Dim d9 As DateTime = d1.AddHours(2).AddSeconds((-window / 2))

    Console.WriteLine($"d1 ({d1}) ~= d1 ({d1}): {RoughlyEquals(d1, d1, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d2 ({d2}): {RoughlyEquals(d1, d2, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d3 ({d3}): {RoughlyEquals(d1, d3, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d4 ({d4}): {RoughlyEquals(d1, d4, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d5 ({d5}): {RoughlyEquals(d1, d5, window, freq)}")

    Console.WriteLine($"d1 ({d1}) ~= d6 ({d6}): {RoughlyEquals(d1, d6, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d7 ({d7}): {RoughlyEquals(d1, d7, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d8 ({d8}): {RoughlyEquals(d1, d8, window, freq)}")
    Console.WriteLine($"d1 ({d1}) ~= d9 ({d9}): {RoughlyEquals(d1, d9, window, freq)}")
End Sub
' The example displays output similar to the following:
'    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
'    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
'    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True

Considerações de interoperabilidade COMCOM interop considerations

Um DateTime valor que é transferido para um aplicativo COM e, em seguida, será transferida para um aplicativo gerenciado, é chamado de ida e volta.A DateTime value that is transferred to a COM application, then is transferred back to a managed application, is said to round-trip. No entanto, um DateTime valor que especifica somente um horário não ida e volta como esperado.However, a DateTime value that specifies only a time does not round-trip as you might expect.

Se a ida e volta é apenas uma hora, como às 3 da tarde, a data final e a hora é de 30 de dezembro de 1899, C.E.If you round-trip only a time, such as 3 P.M., the final date and time is December 30, 1899 C.E. às 3:00, em vez de, 1 de janeiro de 0001. C.E.at 3:00 P.M., instead of January, 1, 0001 C.E. em 15:00.at 3:00 P.M. O .NET Framework e COM pressupõem uma data padrão quando apenas uma vez é especificado.The .NET Framework and COM assume a default date when only a time is specified. No entanto, o sistema COM pressupõe uma data de base de 30 de dezembro de 1899 C.E., enquanto o .NET Framework assume uma data base, de 1º de janeiro, 0001. C.E.However, the COM system assumes a base date of December 30, 1899 C.E., while the .NET Framework assumes a base date of January, 1, 0001 C.E.

Quando apenas uma vez é passada do .NET Framework para COM, o processamento especial é executado que converte a hora para o formato usado por COM.When only a time is passed from the .NET Framework to COM, special processing is performed that converts the time to the format used by COM. Quando apenas uma vez é passada do COM ao .NET Framework, nenhum processamento especial é executado porque que corromper legítimos datas e horas em ou antes de 30 de dezembro de 1899.When only a time is passed from COM to the .NET Framework, no special processing is performed because that would corrupt legitimate dates and times on or before December 30, 1899. Se uma data começa seu ida e volta de COM, o .NET Framework e COM preservam a data.If a date starts its round-trip from COM, the .NET Framework and COM preserve the date.

O comportamento do .NET Framework e COM significa que, se suas viagens de ida e volta da aplicativo uma DateTime que especifica apenas uma vez, seu aplicativo deve se lembrar de modificar ou ignorar a data de final de incorreta DateTime objeto.The behavior of the .NET Framework and COM means that if your application round-trips a DateTime that only specifies a time, your application must remember to modify or ignore the erroneous date from the final DateTime object.

Construtores

DateTime(Int64) DateTime(Int64) DateTime(Int64) DateTime(Int64)

Inicializa uma nova instância da estrutura DateTime para um número especificado de tiques.Initializes a new instance of the DateTime structure to a specified number of ticks.

DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind) DateTime(Int64, DateTimeKind)

Inicializa uma nova instância da estrutura DateTime para o número de tiques especificado e para o UTC (Tempo Universal Coordenado) ou para a hora local.Initializes a new instance of the DateTime structure to a specified number of ticks and to Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32) DateTime(Int32, Int32, Int32)

Inicializa uma nova instância da estrutura DateTime para o ano, o mês e o dia especificados.Initializes a new instance of the DateTime structure to the specified year, month, and day.

DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Calendar)

Inicializa uma nova instância da estrutura DateTime para o ano, o mês e o dia especificados do calendário especificado.Initializes a new instance of the DateTime structure to the specified year, month, and day for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32)

Inicializa uma nova instância da estrutura DateTime para o ano, mês, dia, hora, minuto e segundo especificados.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Inicializa uma nova instância da estrutura DateTime para o ano, o mês, o dia, a hora, o minuto, o segundo e o UTC (Tempo Universal Coordenado) especificados ou para a hora local.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Inicializa uma nova instância da estrutura DateTime para o ano, mês, dia, hora, minuto e segundo especificados para o calendário especificado.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)

Inicializa uma nova instância da estrutura DateTime para o ano, mês, dia, hora, minuto, segundo e milissegundo especificados.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)

Inicializa uma nova instância da estrutura DateTime com o ano, mês, dia, hora, minuto, segundo, milissegundo e UTC (Tempo Universal Coordenado) ou hora local especificados.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)

Inicializa uma nova instância da estrutura DateTime para o ano, mês, dia, hora, minuto, segundo e milissegundo especificados para o calendário especificado.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, and millisecond for the specified calendar.

DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind) DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)

Inicializa uma nova instância da estrutura DateTime com ano, mês, dia, hora, minuto, segundo, milissegundo e UTC (Tempo Universal Coordenado) ou hora local especificados para o calendário especificado.Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, second, millisecond, and Coordinated Universal Time (UTC) or local time for the specified calendar.

Campos

MaxValue MaxValue MaxValue MaxValue

Representa o maior valor possível de DateTime.Represents the largest possible value of DateTime. Este campo é somente leitura.This field is read-only.

MinValue MinValue MinValue MinValue

Representa o menor valor possível de DateTime.Represents the smallest possible value of DateTime. Este campo é somente leitura.This field is read-only.

UnixEpoch UnixEpoch UnixEpoch UnixEpoch

Propriedades

Date Date Date Date

Obtém o componente de data da instância.Gets the date component of this instance.

Day Day Day Day

Obtém o dia do mês representado por essa instância.Gets the day of the month represented by this instance.

DayOfWeek DayOfWeek DayOfWeek DayOfWeek

Obtém o dia da semana representado por essa instância.Gets the day of the week represented by this instance.

DayOfYear DayOfYear DayOfYear DayOfYear

Obtém o dia do ano representado por essa instância.Gets the day of the year represented by this instance.

Hour Hour Hour Hour

Obtém o componente de hora da data representada por essa instância.Gets the hour component of the date represented by this instance.

Kind Kind Kind Kind

Obtém um valor que indica se a hora representada por essa instância é baseada na hora local, no UTC (Tempo Universal Coordenado) ou em nenhum dos dois.Gets a value that indicates whether the time represented by this instance is based on local time, Coordinated Universal Time (UTC), or neither.

Millisecond Millisecond Millisecond Millisecond

Obtém o componente de milissegundos da data representada por essa instância.Gets the milliseconds component of the date represented by this instance.

Minute Minute Minute Minute

Obtém o componente de minuto da data representada por essa instância.Gets the minute component of the date represented by this instance.

Month Month Month Month

Obtém o componente de mês da data representada por essa instância.Gets the month component of the date represented by this instance.

Now Now Now Now

Obtém um objeto DateTime definido como a data e hora atuais neste computador, expressas como a hora local.Gets a DateTime object that is set to the current date and time on this computer, expressed as the local time.

Second Second Second Second

Obtém o componente de segundos da data representada por essa instância.Gets the seconds component of the date represented by this instance.

Ticks Ticks Ticks Ticks

Obtém o número de tiques que representam a data e hora dessa instância.Gets the number of ticks that represent the date and time of this instance.

TimeOfDay TimeOfDay TimeOfDay TimeOfDay

Obtém a hora do dia para esta instância.Gets the time of day for this instance.

Today Today Today Today

Obtém a data atual.Gets the current date.

UtcNow UtcNow UtcNow UtcNow

Obtém um objeto DateTime definido como a data e hora atual neste computador, expressas como o UTC (Tempo Universal Coordenado).Gets a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).

Year Year Year Year

Obtém o componente de ano da data representada por essa instância.Gets the year component of the date represented by this instance.

Métodos

Add(TimeSpan) Add(TimeSpan) Add(TimeSpan) Add(TimeSpan)

Retorna um novo DateTime que adiciona o valor do TimeSpan especificado ao valor dessa instância.Returns a new DateTime that adds the value of the specified TimeSpan to the value of this instance.

AddDays(Double) AddDays(Double) AddDays(Double) AddDays(Double)

Retorna um novo DateTime que adiciona o número especificado de dias ao valor dessa instância.Returns a new DateTime that adds the specified number of days to the value of this instance.

AddHours(Double) AddHours(Double) AddHours(Double) AddHours(Double)

Retorna um novo DateTime que adiciona o número especificado de horas ao valor dessa instância.Returns a new DateTime that adds the specified number of hours to the value of this instance.

AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double) AddMilliseconds(Double)

Retorna um novo DateTime que adiciona o número especificado de milissegundos ao valor dessa instância.Returns a new DateTime that adds the specified number of milliseconds to the value of this instance.

AddMinutes(Double) AddMinutes(Double) AddMinutes(Double) AddMinutes(Double)

Retorna um novo DateTime que adiciona o número especificado de minutos ao valor dessa instância.Returns a new DateTime that adds the specified number of minutes to the value of this instance.

AddMonths(Int32) AddMonths(Int32) AddMonths(Int32) AddMonths(Int32)

Retorna um novo DateTime que adiciona o número especificado de meses ao valor dessa instância.Returns a new DateTime that adds the specified number of months to the value of this instance.

AddSeconds(Double) AddSeconds(Double) AddSeconds(Double) AddSeconds(Double)

Retorna um novo DateTime que adiciona o número especificado de segundos ao valor dessa instância.Returns a new DateTime that adds the specified number of seconds to the value of this instance.

AddTicks(Int64) AddTicks(Int64) AddTicks(Int64) AddTicks(Int64)

Retorna uma nova DateTime que adiciona o número de tiques especificado no valor dessa instância.Returns a new DateTime that adds the specified number of ticks to the value of this instance.

AddYears(Int32) AddYears(Int32) AddYears(Int32) AddYears(Int32)

Retorna um novo DateTime que adiciona o número especificado de anos ao valor dessa instância.Returns a new DateTime that adds the specified number of years to the value of this instance.

Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime) Compare(DateTime, DateTime)

Compara duas instâncias do DateTime e retorna um inteiro que indica se a primeira instância é anterior, a mesma ou posterior à segunda instância.Compares two instances of DateTime and returns an integer that indicates whether the first instance is earlier than, the same as, or later than the second instance.

CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime) CompareTo(DateTime)

Compara o valor dessa instância com um valor DateTime especificado e retorna um inteiro que indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.Compares the value of this instance to a specified DateTime value and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

CompareTo(Object) CompareTo(Object) CompareTo(Object) CompareTo(Object)

Compara o valor dessa instância com um objeto especificado que contém um valor DateTime especificado e retorna um inteiro que indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.Compares the value of this instance to a specified object that contains a specified DateTime value, and returns an integer that indicates whether this instance is earlier than, the same as, or later than the specified DateTime value.

DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32) DaysInMonth(Int32, Int32)

Retorna o número de dias no ano e mês especificado.Returns the number of days in the specified month and year.

Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime) Equals(DateTime, DateTime)

Retorna um valor que indica se duas instâncias DateTime tiverem o mesmo valor de data e hora.Returns a value indicating whether two DateTime instances have the same date and time value.

Equals(DateTime) Equals(DateTime) Equals(DateTime) Equals(DateTime)

Retorna um valor que indica se o valor dessa instância é igual ao valor da instância DateTime especificada.Returns a value indicating whether the value of this instance is equal to the value of the specified DateTime instance.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.Returns a value indicating whether this instance is equal to a specified object.

FromBinary(Int64) FromBinary(Int64) FromBinary(Int64) FromBinary(Int64)

Desserializa um valor binário de 64 bits e recria um objeto de DateTime original serializado.Deserializes a 64-bit binary value and recreates an original serialized DateTime object.

FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64) FromFileTime(Int64)

Converte a hora de arquivo do Windows especificada em uma hora local equivalente.Converts the specified Windows file time to an equivalent local time.

FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64) FromFileTimeUtc(Int64)

Converte a hora de arquivo Windows especificada em uma hora UTC equivalente.Converts the specified Windows file time to an equivalent UTC time.

FromOADate(Double) FromOADate(Double) FromOADate(Double) FromOADate(Double)

Retorna um DateTime equivalente à Data de Automação OLE especificada.Returns a DateTime equivalent to the specified OLE Automation Date.

GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats() GetDateTimeFormats()

Converte o valor dessa instância em todas as representações de cadeia de caracteres com suporte nos especificadores de formato de data e hora padrão.Converts the value of this instance to all the string representations supported by the standard date and time format specifiers.

GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char) GetDateTimeFormats(Char)

Converte o valor dessa instância em todas as representações de cadeia de caracteres com suporte no especificador de formato de data e hora padrão especificado.Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier.

GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider) GetDateTimeFormats(IFormatProvider)

Converte o valor dessa instância para todas as representações de cadeia de caracteres com suporte pelos especificadores de formato de data e hora padrão e as informações de formatação específicas da cultura especificadas.Converts the value of this instance to all the string representations supported by the standard date and time format specifiers and the specified culture-specific formatting information.

GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider) GetDateTimeFormats(Char, IFormatProvider)

Converte o valor dessa instância para todas as representações de cadeia de caracteres com suporte pelos especificadores de formato de data e hora e as informações de formatação específicas da cultura especificadas.Converts the value of this instance to all the string representations supported by the specified standard date and time format specifier and culture-specific formatting information.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Retorna o código hash para essa instância.Returns the hash code for this instance.

GetTypeCode() GetTypeCode() GetTypeCode() GetTypeCode()

Retorna o TypeCode para tipo de valor DateTime.Returns the TypeCode for value type DateTime.

IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime() IsDaylightSavingTime()

Indica se esta instância do DateTime está dentro do intervalo de horário de verão para o fuso horário atual.Indicates whether this instance of DateTime is within the daylight saving time range for the current time zone.

IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32) IsLeapYear(Int32)

Retorna uma indicação se o ano especificado é um ano bissexto.Returns an indication whether the specified year is a leap year.

Parse(String) Parse(String) Parse(String) Parse(String)

Converte a representação de cadeia de caracteres de uma data e hora em seu DateTime equivalente usando as convenções da cultura do thread atual.Converts the string representation of a date and time to its DateTime equivalent by using the conventions of the current thread culture.

Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider) Parse(String, IFormatProvider)

Converte a representação da cadeia de caracteres de uma data e hora em seu equivalente DateTime usando as informações de formato específicas da cultura.Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information.

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Converte um intervalo de memória que contém uma representação de cadeia de caracteres de uma data e hora em seu DateTime equivalente usando as informações de formato e um estilo de formatação específicos da cultura.Converts a memory span that contains string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles) Parse(String, IFormatProvider, DateTimeStyles)

Converte a representação de cadeia de caracteres de uma data e hora em seu DateTime equivalente usando as informações de formato e um estilo de formatação específicos da cultura.Converts the string representation of a date and time to its DateTime equivalent by using culture-specific format information and a formatting style.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado e as informações de formato específicas da cultura.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.The format of the string representation must match the specified format exactly.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado, as informações de formato específicas da cultura e o estilo.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. O formato da representação de cadeia de caracteres deverá corresponder exatamente ao formato especificado ou uma exceção será gerada.The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Converte a representação de cadeia de caracteres especificada de um data e hora no equivalente de DateTime usando a matriz de formatos, informações de formato específicas da cultura e estilo especificados.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. O formato da representação de cadeia de caracteres deverá corresponder a, pelo menos, um dos formatos especificados exatamente ou uma exceção será gerada.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind) SpecifyKind(DateTime, DateTimeKind)

Cria um novo objeto DateTime que tem o mesmo número de tiques que o DateTime especificado, mas é designado como hora local, UTC (Tempo Universal Coordenado) ou nenhum dos dois, conforme indicado pelo valor DateTimeKind especificado.Creates a new DateTime object that has the same number of ticks as the specified DateTime, but is designated as either local time, Coordinated Universal Time (UTC), or neither, as indicated by the specified DateTimeKind value.

Subtract(DateTime) Subtract(DateTime) Subtract(DateTime) Subtract(DateTime)

Subtrai a data e hora especificadas dessa instância.Subtracts the specified date and time from this instance.

Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan) Subtract(TimeSpan)

Subtrai a duração especificada dessa instância.Subtracts the specified duration from this instance.

ToBinary() ToBinary() ToBinary() ToBinary()

Serializa o objeto DateTime atual como um valor binário de 64 bits que posteriormente pode ser usado para recriar o objeto DateTime.Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object.

ToFileTime() ToFileTime() ToFileTime() ToFileTime()

Converte o valor do objeto DateTime atual para uma hora de arquivo do Windows.Converts the value of the current DateTime object to a Windows file time.

ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc() ToFileTimeUtc()

Converte o valor do objeto DateTime atual para uma hora de arquivo do Windows.Converts the value of the current DateTime object to a Windows file time.

ToLocalTime() ToLocalTime() ToLocalTime() ToLocalTime()

Converte o valor do objeto DateTime atual para a hora local.Converts the value of the current DateTime object to local time.

ToLongDateString() ToLongDateString() ToLongDateString() ToLongDateString()

Converte o valor do atual objeto DateTime na representação de cadeia de caracteres de data completa equivalente.Converts the value of the current DateTime object to its equivalent long date string representation.

ToLongTimeString() ToLongTimeString() ToLongTimeString() ToLongTimeString()

Converte o valor do atual objeto DateTime na representação de cadeia de caracteres de hora completa equivalente.Converts the value of the current DateTime object to its equivalent long time string representation.

ToOADate() ToOADate() ToOADate() ToOADate()

Converte o valor dessa instância na data de Automação OLE equivalente.Converts the value of this instance to the equivalent OLE Automation date.

ToShortDateString() ToShortDateString() ToShortDateString() ToShortDateString()

Converte o valor do atual objeto DateTime na representação de cadeia de caracteres de data abreviada equivalente.Converts the value of the current DateTime object to its equivalent short date string representation.

ToShortTimeString() ToShortTimeString() ToShortTimeString() ToShortTimeString()

Converte o valor do objeto DateTime atual na representação de cadeia de caracteres de hora abreviada equivalente.Converts the value of the current DateTime object to its equivalent short time string representation.

ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider)

Converte o valor do atual objeto DateTime na representação de cadeia de caracteres equivalente usando o formato especificado e as informações de formato específicas da cultura.Converts the value of the current DateTime object to its equivalent string representation using the specified format and culture-specific format information.

ToString(String) ToString(String) ToString(String) ToString(String)

Converte o valor do atual objeto DateTime na representação de cadeia de caracteres equivalente usando o formato especificado e as convenções de formatação da cultura atual.Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture.

ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider)

Converte o valor do objeto DateTime atual para sua representação de cadeia de caracteres equivalente usando as informações de formato específicas da cultura especificada.Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

ToString() ToString() ToString() ToString()

Converte o valor do atual objeto DateTime na representação de cadeia de caracteres equivalente usando as convenções de formatação da cultura atual.Converts the value of the current DateTime object to its equivalent string representation using the formatting conventions of the current culture.

ToUniversalTime() ToUniversalTime() ToUniversalTime() ToUniversalTime()

Converte o valor do atual objeto DateTime em UTC (Tempo Universal Coordenado).Converts the value of the current DateTime object to Coordinated Universal Time (UTC).

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParse(String, DateTime) TryParse(String, DateTime) TryParse(String, DateTime) TryParse(String, DateTime)

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

TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime) TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

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

TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime) TryParse(ReadOnlySpan<Char>, DateTime)
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado, as informações de formato específicas da cultura e o estilo.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.The format of the string representation must match the specified format exactly. O método retorna um valor que indica se a conversão foi bem-sucedida.The method returns a value that indicates whether the conversion succeeded.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

Converte a representação de cadeia de caracteres especificada de um data e hora no equivalente de DateTime usando a matriz de formatos, informações de formato específicas da cultura e estilo especificados.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. O formato da representação da cadeia de caracteres deve corresponder exatamente a um dos formatos especificados pelo menos.The format of the string representation must match at least one of the specified formats exactly. O método retorna um valor que indica se a conversão foi bem-sucedida.The method returns a value that indicates whether the conversion succeeded.

Operadores

Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan) Addition(DateTime, TimeSpan)

Subtrai um dado intervalo de tempo de uma data e hora especificada e retorna uma nova data e hora.Adds a specified time interval to a specified date and time, yielding a new date and time.

Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime) Equality(DateTime, DateTime)

Determina se duas instâncias especificadas do DateTime são iguais.Determines whether two specified instances of DateTime are equal.

GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime) GreaterThan(DateTime, DateTime)

Determina se um DateTime especificado é posterior ao outro DateTime especificado.Determines whether one specified DateTime is later than another specified DateTime.

GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime) GreaterThanOrEqual(DateTime, DateTime)

Determina se um DateTime especificado representa uma data e hora que seja igual ou posterior à outra DateTime especificada.Determines whether one specified DateTime represents a date and time that is the same as or later than another specified DateTime.

Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime) Inequality(DateTime, DateTime)

Determina se duas instâncias especificadas de DateTime não são iguais.Determines whether two specified instances of DateTime are not equal.

LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime) LessThan(DateTime, DateTime)

Determina se um DateTime especificado é anterior ao outro DateTime especificado.Determines whether one specified DateTime is earlier than another specified DateTime.

LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime) LessThanOrEqual(DateTime, DateTime)

Determina se um DateTime especificado representa uma data e hora iguais ou anteriores à outra DateTime especificada.Determines whether one specified DateTime represents a date and time that is the same as or earlier than another specified DateTime.

Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan) Subtraction(DateTime, TimeSpan)

Subtrai um intervalo de tempo especificado de uma data e hora especificada e retorna uma nova data e hora.Subtracts a specified time interval from a specified date and time and returns a new date and time.

Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime) Subtraction(DateTime, DateTime)

Subtrai uma data e hora especificada de outra data e hora especificada e retorna um intervalo de tempo.Subtracts a specified date and time from another specified date and time and returns a time interval.

Implantações explícitas de interface

IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object) IComparable.CompareTo(Object)
IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode() IConvertible.GetTypeCode()
IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider) IConvertible.ToBoolean(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider) IConvertible.ToByte(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider) IConvertible.ToChar(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider) IConvertible.ToDateTime(IFormatProvider)

Retorna o objeto DateTime atual.Returns the current DateTime object.

IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider) IConvertible.ToDecimal(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider) IConvertible.ToDouble(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider) IConvertible.ToInt16(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider) IConvertible.ToInt32(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider) IConvertible.ToInt64(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider) IConvertible.ToSByte(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider) IConvertible.ToSingle(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider) IConvertible.ToType(Type, IFormatProvider)

Converte o objeto DateTime atual em um objeto de um tipo especificado.Converts the current DateTime object to an object of a specified type.

IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider) IConvertible.ToUInt16(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider) IConvertible.ToUInt32(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider) IConvertible.ToUInt64(IFormatProvider)

Esta conversão não é suportada.This conversion is not supported. A tentativa de usar esse método lança um InvalidCastException.Attempting to use this method throws an InvalidCastException.

ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Popula um objeto SerializationInfo com os dados necessários para serializar o objeto DateTime atual.Populates a SerializationInfo object with the data needed to serialize the current DateTime object.

Aplica-se a

Acesso thread-safe

Todos os membros desse tipo são thread-safe.All members of this type are thread safe. Os membros que aparentam modificar efetivamente o estado retornam uma nova instância inicializada com o novo valor.Members that appear to modify instance state actually return a new instance initialized with the new value. Assim como acontece com qualquer outro tipo, a leitura e a gravação em uma variável compartilhada que contém uma instância desse tipo devem ser protegidas por um bloqueio para garantir thread-safe.As with any other type, reading and writing to a shared variable that contains an instance of this type must be protected by a lock to guarantee thread safety.

Veja também