Como trabalhar com o tipo DateTime em C#

DateTime: Saiba como trabalhar com o tipo em C#. É quase que essencial ter o conhecimento de como manipular e trabalhar com data, isso é de suma importância,  por tal motivo, este artigo terá o objetivo de abordar de maneira conceitual e pratica, uma ideia geral do objeto DateTime no .Net core e como podemos trabalhar com diferentes culturas, fusos horários, formatação, etc.

INTRODUÇÃO A DATAS

Daremos início falando um pouco sobre a classe DateTime no .Net core, é um tipo, um struct (Tipo primitivo, inicializado sempre com um valor), que possui várias propriedades e métodos que armazena as datas no formato yyyy /MM /dd — hh /mm, com ela você poderá simplesmente pegar a data atual e fazer sua exibição de forma formatada e além disso também poderá realizar manipulações e modificações mais avançadas, usando intervalos de tempo e muito mais.

INICIALIZANDO O DATETIME

Observe o exemplo abaixo:

DateTime

Quando nos iniciamos uma data, e não especificamos nenhum valor, ela irá criar uma estrutura que vai vir com os valores padrão. Lembrando que não existe data nula(null), pois DateTime é um tipo de valor como int, double etc., portanto, não há como atribuir um valor nulo.

DateTime

Se quiser obter a sua data\hora atual, é só usar a propriedade “.Now” como exibido acima.

OBTENDO VALORES DA DATA

Como vimos no exemplo do tópico anterior para você obter a sua data atual basta você utilizar o “DateTime.Now”, mas se por algum motivo você quiser ou precisar criar uma data especificando o dia, mês e ano, e até mesmo hora, minutos e segundos, nesse caso, a maneira de fazer isso seria a do exemplo abaixo:

DateTime

Se por acaso, também quiser obter esses valores separados, pode fazer dessa outra forma a seguir

DateTime

Um outro método interessante, é o “DayOfWeek”, que trás o dia da semana da data que você inseriu, da seguinte forma

DateTime

FORMATANDO AS DATAS

Nesse tópico veremos como formatar as datas e também os seus padrões de formatação. Com o método “String.Format”, passaremos um elemento para uma string entre { }, podemos também passar um valor de cada vez, mas como tudo fica mais claro de uma maneira pratica, visualize a imagem abaixo:

DateTime

Em alguns países o padrão de formatação é um tanto diferente do padrão do Brasil, por exemplo na separação das datas por barra, entre outras coisas. Serão exibidos abaixo alguns fatores predefinidos

DateTime

Quando se coloca alguma letra depois do dois ponto 0, dentro de chaves, indica algo diferente, no caso o “t”, é entendido como um “short DateTime”, ou seja uma data compactada (horas e minutos).

DateTime

No exemplo acima invés de “t”, colocamos o “d” que vai trazer a data no formato compactado (dia/mês/ano).

DateTime

Agora, quando colocamos o “T” ou “D”, nos trás respectivamente (horas, minutos e segundos) e (dia da semana, dia numerado, mês por extenso e ano)

Uma última forma padrão antes de darmos seguimento a outro ponto nesse artigo, é utilizar dentro das chaves a letra “r”, “s” e “u”, que resultam em exibição de (3 caracters no dia da semana, data e hora) como exemplificado abaixo:

DateTime

Dependendo do sistema que você está usando, essa pode ser uma melhor maneira de formatação, pois caso algo seja alterado, o C# já muda automaticamente.

ADICIONANDO VALORES

Vou mostrar alguns métodos adicionais da data. É habitual ter que remover ano, mês ou dias de uma data, e pode ser complicado se feito à mão, por isso exemplificarei algumas formas de fazer essa e outras coisa mais.

Em caso de que você queira adicionar um dia ou acrescentar algo mais na sua data, isso poderá ser feito da seguinte maneira:

DateTime

Se você quiser decrementar, é só colocar o sinal de menos (-) na frente do número, e ele irá resultar decrementando a quantidade que você digitou.

Também é possível decrementar ou incrementar horas, minutos e segundo, veja abaixo:

DateTime

COMPARANDO DATAS

O tópico agora mostrará mais uma coisa que podemos fazer também, que é comparar as datas.

No primeiro tópico “ INICIANDO COM DATAS”, foi dito que uma data não pode ser Nula, mas há uma maneira sim de se fazer isso, e é a transformando em “nullable types “, veja a maneira em que isso pode ser realizado.

DateTime

Bom, podemos usar a condição “if” para fazermos qualquer comparação de datas

DateTime

Mas para que isso funcione, temos que comparar desse maneira exata, utilizando o “. Date” após a data e também após o DateTime.Now, pois ele irá comparar a estrutura como um todo por isso é necessária a utilização desses elementos.

Desse mesmo modo seria, se quiséssemos fazer uma comparação de maior ou menor, observe:

DateTime

As duas primeiras condições não retornariam “É igual”, pois a data não poderia ser maior ou menor que ela mesma, diferente das outras que são menor/maior igual, ai sim o resultado seria igual

CULTUREINFO

Agora vamos ver um pouco de globalização. Existem dois recursos que usamos no .Net chamados de localização e globalização, utilizamos eles para saber o lugar onde o usuário se encontra ou para formatar datas e horários de acordo com o local onde ele está.

Anteriormente já foi citado que em alguns países a formatação de data e hora podem ser diferentes daqui, tem pais que usa o ponto para separar a data ou hífen. Enfim até mesmo dentro do nosso próprio pais temos distintos horários, como por exemplo: horário de Brasília, horário de Rondônia e por ai vai.

Precisamos usar o “System.Globalization” para trabalhar com CultureInfo, pode ser na mesma linha de código, ou colocando o system no “using”, vamos ver isso na prática.

TIMEZONE

Quando trabalhamos com data/hora temos que pensar em diversas situações, principalmente se seu “App” por exemplo vai atender usuário de diferentes localidades, temos o exemplo do facebook, que atende usuário de quase todas as partes do mundo.

Temos que seguir a linha de que as nossas aplicações rodam em um servidor que nem sempre está no nosso país, então se utilizarmos o “CultureInfo” como no tópico anterior, a aplicação vai pegar a cultura da máquina que está sendo usada, ou seja se estiver em uma aplicação, por exemplo “Asp.Net”, que está rodando em uma servidor e o mesmo está nos Estados Unidos, independente do usuário estar no Brasil ou no Japão, a cultura será a da máquina.

Para trabalharmos de uma melhor forma, seguindo essa linha de pensamento faremos da seguinte maneira:

DateTime

Se estiver trabalhando com aplicações globalizadas que estão rodando no mundo todo, é recomendado que utilize o formato “UtcNow”, salva nesse formato e na hora de mandar pra tela usa o “CultureInfo”, como exibido abaixo:

DateTime

Caso eu não queira usar a hora da máquina que estou usando e sim a do usuário, por exemplo que esteja na Austrália

DateTime

TIMESPAN

Para fechar o nosso artigo, vamos falar sobre mais um item que é o TimeSpan. É um tipo de estrutura que está presente no namespace System. Ele representa o intervalo de tempo e pode ser expresso como dias, horas, minutos e segundos. Ajuda a buscar dias, horas, minutos e segundos entre duas datas.

DateTime

Quando queremos cálculo de hora, fração de hora, minutos, segundos, diferença de horas, utilizamos esse formato.

DateTime

CONCLUSÃO

Neste artigo, tivemos uma visão geral sobre o objeto DateTime no .Net C #. Ele também contém como trabalhar com diferentes culturas, fusos horários, formmatting, diferenças de data e outros. Espero que ajude você frequentemente.

Por: Grazielle Ribeiro

Estudante da Universidade Federal de SP IFSP  e é um dos novos talentos que está participando do Programa de Formação ModalGR 2020

Este post tambem pode ser lido em Medium:

Continue aprendendo no blog de Modal GR:

Artigos Relacionados