Formação
Módulo
Escolher o tipo de dados correto no seu código C# - Training
Escolha o tipo de dados correto para seu código a partir de vários tipos básicos usados em C#.
Este browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
O .NET fornece tipos que representam datas, horas e fusos horários. Este artigo descreve esses tipos.
Além da estrutura básica de DateTime, o .NET fornece as seguintes classes que oferecem suporte ao trabalho com fusos horários:
Use essa classe para trabalhar com qualquer fuso horário predefinido em um sistema, para criar novos fusos horários e para converter facilmente datas e horas de um fuso horário para outro. Para novos desenvolvimentos, use a classe TimeZoneInfo em vez da classe TimeZone.
Use essa estrutura para trabalhar com datas e horas cujo deslocamento (ou diferença) do UTC é conhecido. A estrutura DateTimeOffset combina um valor de data e hora com o deslocamento dessa hora em relação ao UTC. Devido à sua relação com o UTC, um valor individual de data e hora identifica inequivocamente um único ponto no tempo. Isso torna um valor DateTimeOffset mais portátil de um computador para outro do que um valor DateTime.
As seguintes classes são para apoiar o trabalho com o tempo:
Use essa estrutura para representar um intervalo de tempo, como uma quantidade de tempo decorrido ou a diferença entre duas datas.
Use essa estrutura para representar uma hora sem data. O tempo representa as horas, minutos e segundos de um dia não específico.
TimeOnly
tem uma gama de 00:00:00.0000000
para 23:59:59.9999999
. Esse tipo pode ser usado para substituir os tipos DateTime
e TimeSpan
no seu código quando usou esses tipos para representar um instante. Para obter mais informações, consulte Como usar as estruturas DateOnly e TimeOnly.
Importante
TimeOnly não está disponível para o .NET Framework.
Esta é uma classe base que fornece uma abstração de tempo. Uma maneira comum de verificar a hora atual é usando DateTime.UtcNow
ou DateTimeOffset.UtcNow
. No entanto, esses tipos não fornecem nenhum controle sobre o que é considerado "agora". Por que você gostaria de controlar isso? Testabilidade. Por exemplo, considere que você está escrevendo um aplicativo de rastreamento de eventos que fornece lembretes 1 dia antes do evento. A lógica da aplicação é verificar a hora do evento a cada hora e alertar o utilizador quando faltar 24 horas para o evento. Ao escrever seus testes para o aplicativo, você forneceria seu próprio tipo que envolve DateTimeOffset.UtcNow
para testar essa lógica, mas agora o .NET fornece essa classe de abstração para você.
Para obter mais informações, consulte O que é TimeProvider.
O tipo TimeProvider
está incluído no .NET.
Para o .NET Framework e o .NET Standard, TimeProvider
é fornecido pelo pacote Microsoft.Bcl.TimeProvider NuGet.
Existem as seguintes classes para apoiar o trabalho com datas:
Use essa estrutura ao trabalhar com um valor que representa apenas uma data. A data representa todo o dia, desde o início do dia até ao fim.
DateOnly
tem uma gama de 0001-01-01
através de 9999-12-31
. E esse tipo representa a combinação de mês, dia e ano sem um horário específico. Se você usou anteriormente um tipo de DateTime
em seu código para representar uma data que desconsiderou a hora, use esse tipo em seu lugar. Para obter mais informações, consulte Como usar as estruturas DateOnly e TimeOnly.
Importante
DateOnly não está disponível para o .NET Framework.
A próxima seção fornece as informações necessárias para trabalhar com fusos horários e criar aplicativos com reconhecimento de fuso horário que podem converter datas e horas de um fuso horário para outro.
Visão geral do fuso horário
Discute a terminologia, os conceitos e os problemas envolvidos na criação de aplicativos com reconhecimento de fuso horário.
Escolhendo entre DateTime, DateTimeOffset, TimeSpan e TimeZoneInfo
Discute quando usar os tipos DateTime, DateTimeOffsete TimeZoneInfo ao trabalhar com dados de data e hora.
Localizando os fusos horários definidos em um sistema local
Descreve como enumerar os fusos horários encontrados em um sistema local.
Como: Enumerar fusos horários presentes em um computador
Fornece exemplos que enumeram os fusos horários definidos no registro de um computador e que permitem que os usuários selecionem um fuso horário predefinido de uma lista.
Como acessar os objetos de fuso horário local e UTC predefinidos
Descreve como acessar o Tempo Universal Coordenado e o fuso horário local.
Como instanciar um objeto TimeZoneInfo
Descreve como instanciar um objeto TimeZoneInfo do registro do sistema local.
Instanciando um objeto DateTimeOffset
Discute as maneiras pelas quais um objeto DateTimeOffset pode ser instanciado e as maneiras pelas quais um valor DateTime pode ser convertido em um valor DateTimeOffset.
Como criar fusos horários sem regras de ajuste
Descreve como criar um fuso horário personalizado que não suporta a transição de e para o horário de verão.
Como criar fusos horários com regras de ajuste
Descreve como criar um fuso horário personalizado que ofereça suporte a uma ou mais transições de e para o horário de verão.
Salvar e restaurar fusos horários
Descreve TimeZoneInfo suporte para serialização e desserialização de dados de fuso horário e ilustra alguns dos cenários nos quais esses recursos podem ser usados.
Como guardar fusos horários para um recurso incorporado
Descreve como criar um fuso horário personalizado e salvar suas informações em um arquivo de recurso.
Como restaurar fusos horários a partir de um de recursos incorporado
Descreve como instanciar fusos horários personalizados que foram salvos em um arquivo de recurso incorporado.
Realização de operações aritméticas com datas e horas
Aborda as questões envolvidas na adição, subtração e comparação de valores DateTime e DateTimeOffset.
Como utilizar fusos horários na aritmética das datas e horas
Discute como executar aritmética de data e hora que reflete as regras de ajuste de fuso horário.
Convertendo entre DateTime e DateTimeOffset
Descreve como converter entre valores DateTime e DateTimeOffset.
Conversão de horários entre fusos horários
Descreve como converter horários de um fuso horário para outro.
Como resolver horas ambíguas
Descreve como resolver uma hora ambígua mapeando-a para a hora padrão do fuso horário.
Como: Permitir que os usuários resolvam tempos ambíguos
Descreve como permitir que um usuário determine o mapeamento entre uma hora local ambígua e o Tempo Universal Coordenado.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Formação
Módulo
Escolher o tipo de dados correto no seu código C# - Training
Escolha o tipo de dados correto para seu código a partir de vários tipos básicos usados em C#.