Article image

AJ

Adson Junior12/08/2023 01:47
Compartilhe

Um rolê pelo DateTime em C# - E como ele vai ajudar em seus projetos.

    Saudações senhores! Neste artigo será retratado sobre a função "DateTIme" em C# e suas utilidade em várias situações.

    Um breve resumo do que será abordado neste artigo:

    Neste artigo, abordaremos uma das funcionalidades essenciais da sintaxe do C#: o DateTime. Essa funcionalidade é versátil e pode ser aplicada em uma variedade de contextos. Vamos explorar como utilizar o DateTime, quando é apropriado empregá-lo, onde suas aplicações se destacam e por que ele é uma ferramenta valiosa. Este artigo foi elaborado com ênfase em iniciantes, proporcionando uma abordagem didática e direcionada ao público que está ingressando no mundo do C#.

    Ao longo deste texto, vamos desvendar o universo do DateTime, revelando seu potencial e utilidade em diferentes cenários. Além disso, apresentaremos exemplos reais para ilustrar as aplicações práticas do DateTIme. Portanto, se você está começando sua jornada no C# e deseja compreender melhor o funcionamento e a relevância do DateTime, este artigo é o ponto de partida ideal para entender sobre DateTime.

    O horário que estou fazendo isso é:

    var date = DateTime.Now();
    Console.WriteLine(date);
    
    // Resultado: 11/08/2023 23:45:06 PM
    

    Como funciona esse treco chamado DateTime?

    Se liga, o DateTime é um jeito maneiro de lidar com datas e horas no C#. Com ele, a gente pode criar e manipular essas informações de um jeito bem fácil. Vai ser nosso parceiro pra fazer contas com o tempo e organizar nossos eventos, tipo aquele churrasco no fim de semana.

    Pra começar, vamos criar um DateTime pra hoje, agora mesmo! Olha só como a parada é simples:

    DateTime agora = DateTime.Now; 
    

    Agora nós temos a data e hora atual guardadinhas no nosso amigo agora. Mas se quiser, a gente pode criar uma data personalizada, tipo um convite pra aquele pagode no próximo mês:

    
    DateTime pagode = new DateTime(2023, 9, 15, 20, 0, 0);
     
    

    Nesse exemplo, a gente marcou o pagode pro dia 15 de setembro às 20:00. Nós personalizamos uma data específica para nossos rolês.

    Agora, que tal pegar alguns detalhes dessas datas e horas? Tipo, saber o ano, o mês ou a hora? Não é difícil, não!

    
    int ano = agora.Year;
    int mes = agora.Month;
    int dia = agora.Day;
    int hora = agora.Hour;
    int minuto = agora.Minute;
    int segundo = agora.Second;
     
    

    E assim a gente pode pegar cada pedacinho das datas e horas e colocar em variáveis. Bem fácil, né?

    Juntando a rapaziada: Operações e Manipulação

    Agora, a parada fica ainda mais divertida. Dá pra fazer contas com as datas e horas, adicionar e subtrair, tipo planejar um piquenique na Lagoa Rodrigo de Freitas.

    Adicionando e Subtraindo Tempo

    Sabe quando a gente quer adicionar um tempinho extra ou tirar um tempinho da nossa data? O DateTime tá aí pra isso!

    
    DateTime agora = DateTime.Now; 
    
    // Vamos adicionar 2 dias 
    DateTime daquiA2Dias = agora.AddDays(2); 
    
    // E se a gente quiser subtrair 3 horas? 
    DateTime daquiA3Horas = agora.AddHours(-3); 
    
    

    Isso é demais, né? Com esse papo reto, você pode dar aquela incrementada ou tirar um pedacinho do seu tempo de boas.

    Calculando a Diferença

    Às vezes a gente precisa saber quanto tempo passou entre duas datas. Aí o TimeSpan entra na jogada. Dá uma olhada:

    
    DateTime partida = new DateTime(2023, 8, 12, 10, 0, 0); 
    DateTime chegada = new DateTime(2023, 8, 12, 15, 30, 0); 
    TimeSpan duracao = chegada - partida; 
    Console.WriteLine($"A viagem durou {duracao.Hours} horas e {duracao.Minutes} minutos.");
    
    /*
    *TimeSpan é um amigo do DateTime em C#. Ele é usado pra representar um período de tempo, daqueles que a gente precisa contar. 
    *Sabe quando a gente quer saber quanto tempo passou entre dois momentos? O TimeSpan é a resposta!
    */
     
    
    

    Pronto! Agora você tem a diferença de tempo entre a partida e a chegada, de um jeito que a galera entende.

    Comparando Datas

    E que tal comparar datas? Tipo, saber qual data vem antes ou depois da outra. O DateTime é puro chamego nessa hora!

    
    DateTime eventoA = new DateTime(2023, 8, 15); 
    DateTime eventoB = new DateTime(2023, 8, 20); 
    if (eventoA < eventoB) 
    { 
     Console.WriteLine("O Evento A acontece antes do Evento B."); 
    } 
    
    else if (eventoA > eventoB) {
     Console.WriteLine("O Evento A acontece depois do Evento B."); 
    } 
    else {
     Console.WriteLine("Os eventos acontecem no mesmo dia."); 
    }
    
    

    Formatando a Saída

    Quando a gente quer mostrar uma data ou hora pro pessoal, a formatação é nossa melhor amiga. Com o DateTime, a gente tem essa parada na palma da mão. Olha só como é fácil:

    
    DateTime agora = DateTime.Now; // Formatando a data no estilo brasileiro 
    string dataFormatada = agora.ToString("dd/MM/yyyy"); // Formatando a hora no estilo 24 horas 
    string horaFormatada = agora.ToString("HH:mm"); // Formatando data e hora juntos 
    string dataHoraFormatada = agora.ToString("dd/MM/yyyy HH:mm:ss"); 
    
    

    Com essas manhas, a gente consegue mostrar pra galera de um jeito que todo mundo entende. Formatar é tipo escolher o look certo pra cada ocasião!

    -Letras Mágicas de Formatação

    Quer saber um segredo? Na formatação do DateTime, a gente usa umas letras especiais. Tipo assim:

    • d: Dia do mês (sem zero à esquerda)
    • dd: Dia do mês (com zero à esquerda)
    • M: Mês (sem zero à esquerda)
    • MM: Mês (com zero à esquerda)
    • yy: Ano (dois dígitos)
    • yyyy: Ano (quatro dígitos)
    • H: Hora (24 horas, sem zero à esquerda)
    • HH: Hora (24 horas, com zero à esquerda)
    • m: Minutos
    • mm: Minutos (com zero à esquerda)
    • s: Segundos
    • ss: Segundos (com zero à esquerda)

    E tem muitas outras, viu?

    Convertendo de DateTime para Outros Tipos

    Às vezes, a gente precisa converter um DateTime para outro tipo de dado, como uma string ou um DateTimeOffset. Relaxa, que isso é tranquilo!

    
    DateTime agora = DateTime.Now; // Convertendo para uma string formatada 
    string dataFormatada = agora.ToString("dd/MM/yyyy"); // Convertendo para DateTimeOffset 
    DateTimeOffset dateTimeOffset = agora; 
    
    

    É isso aí, o DateTime é versátil e se adapta bem em diferentes situações.

    Convertendo de Outros Tipos para DateTime

    E se a gente quiser fazer o caminho inverso? Transformar uma string em DateTime ou um DateTimeOffset em DateTime? Sem problemas!

    
    string dataTexto = "15/08/2023"; 
    DateTime dataConvertida = DateTime.ParseExact(dataTexto, "dd/MM/yyyy", CultureInfo.InvariantCulture);
    DateTimeOffset dateTimeOffset = DateTimeOffset.Now; 
    DateTime dateTime = dateTimeOffset.DateTime; 
    
    

    Com esse macete, você pode pegar uma string que representa uma data e transformar em um DateTime, ou então transformar um DateTimeOffset de volta em DateTime.

    Quando usar DateTime?

    Bem, agora que você possui uma noção básica de como funciona o DateTime, vamos entender quando usar.

    1. Registro de Horários

    Quando a gente quer gravar o horário de um evento, transação ou ação no nosso sistema, o DateTime é o parceiro ideal. Tipo, quando alguém faz um pedido no seu site, você pode gravar o momento exato em que isso aconteceu.

    
    DateTime horarioPedido = DateTime.Now; 
    
    

    2. Agendamento e Planejamento

    Se você tá trabalhando com agendas, calendários ou agendamento de eventos, o DateTime é seu melhor amigo. Pode ser pra agendar reuniões, shows ou qualquer coisa que aconteça em um momento específico.

    
    DateTime dataEvento = new DateTime(2023, 10, 20, 18, 0, 0); 
    
    

    3. Cálculos de Idade

    Quer calcular a idade de alguém? O DateTime é a resposta! Dá pra subtrair a data de nascimento da data atual e voilà, você tem a idade.

    
    DateTime nascimento = new DateTime(1990, 5, 15); 
    TimeSpan diferenca = DateTime.Now - nascimento; 
    int idade = diferenca.Days / 365; 
    
    

    4. Manipulação de Durações

    Se você precisa lidar com intervalos de tempo, tipo quantos minutos alguém ficou no seu site, o DateTime dá conta do recado. Use o TimeSpan pra calcular a diferença entre duas datas e tenha a duração.

    
    DateTime inicio = DateTime.Now; 
    DateTime fim = DateTime.Now.AddMinutes(30); 
    TimeSpan duracao = fim - inicio; 
    
    // Duração de 30 minutos 
    
    

    5. Anotações Temporais

    Quando você quer guardar informações temporais em bancos de dados ou logs, o DateTime entra em ação. Ele ajuda a rastrear quando as coisas aconteceram.

    Obs: O que vem a seguir é mais complexo, você vai entender melhor sobre isso no módulo de banco de dados.

    
    // Gravando no banco de dados
     string sql = $"INSERT INTO Eventos (Nome, DataHora) VALUES ('Show de Rock', '{DateTime.Now}')"; 
    // Ou em logs 
    string log = $"[INFO] - Acesso registrado em: {DateTime.Now}";
    

    Onde usar DateTime?

    DateTime é versátil, meu bom! Então você pode aplicar ele em vários rolês dependendo da sua área e projeto.

    1. Desenvolvimento de Aplicações Web

    Quando você tá criando um site ou aplicativo web, o DateTime é o cara que te ajuda a exibir datas e horas pra galera. Pode ser desde a data de postagem de um blog até o horário de início de um evento online.

    2. Sistemas de Reservas e Agendamento

    Se você tá trabalhando num sistema de reservas de salas, agendamento de consultas médicas ou até reservas de passagens, o DateTime é seu parceiro pra guardar datas e horas. Ele garante que tudo aconteça na hora certa.

    3. Aplicações de Logística

    Em apps de logística e transporte, o DateTime é essencial. Você pode calcular tempos de entrega, horários de saída e chegada, além de controlar escalas e turnos dos motoristas.

    4. E-Commerce e Pedidos

    Nas lojas online, você pode usar o DateTime pra mostrar prazos de entrega, calcular descontos com base na data da compra ou até programar promoções que começam e terminam em momentos específicos.

    5. Aplicações de Gerenciamento de Projetos

    Se você tá no mundo dos projetos, o DateTime é um aliado poderoso. Pode ser pra acompanhar prazos, marcar reuniões, calcular o tempo de execução de tarefas ou criar cronogramas.

    6. Aplicações Financeiras

    Em apps financeiros, o DateTime entra pra calcular juros, datas de vencimento, períodos de investimento e muito mais. Ele é a base pra controlar a passagem do tempo nesse mundo de números.

    7. Games e Simulações

    Até nos games, o DateTime dá o ar da graça! Pode ser pra controlar eventos que acontecem em horários específicos dentro do jogo ou pra criar simulações que evoluem com o tempo.

    8. Internet das Coisas (IoT)

    Nos dispositivos conectados, o DateTime pode ser usado pra agendar tarefas, programar ações e criar lógicas baseadas em horários. Ele ajuda a manter tudo sincronizado no mundo da IoT.

    Exemplos do uso do DateTime:

    Vou te dar alguns exemplos práticos de como usar o DateTime em diferentes situações. Dá uma olhada nessa lombra:

    1. Exibindo a Data e Hora Atual

    
    DateTime agora = DateTime.Now; 
    
    Console.WriteLine($"Data e Hora Atual: {agora}"); 
    

    2. Agendando um Evento Futuro

    
    DateTime eventoFuturo = DateTime.Now.AddDays(7); 
    
    Console.WriteLine($"Evento agendado para: {eventoFuturo}"); 
    
    

    3. Calculando a Idade

    
    DateTime dataNascimento = new DateTime(1990, 5, 15);
     int idade = DateTime.Now.Year - dataNascimento.Year;
    
     Console.WriteLine($"Idade: {idade} anos"); 
    
    

    4. Exibindo o Dia da Semana

    
    DateTime hoje = DateTime.Today; 
    string diaSemana = hoje.DayOfWeek.ToString();
    
     Console.WriteLine($"Hoje é: {diaSemana}"); 
    
    

    5. Calculando a Duração de um Evento

    
    DateTime inicioEvento = new DateTime(2023, 8, 20, 10, 0, 0); 
    DateTime fimEvento = new DateTime(2023, 8, 20, 15, 30, 0); 
    TimeSpan duracao = fimEvento - inicioEvento; 
    
    Console.WriteLine($"Duração do Evento: {duracao}"); 
    
    

    6. Verificando se um Prazo Está Vencido

    
    DateTime prazo = new DateTime(2023, 7, 31);
    
     if (prazo < DateTime.Now) {
     Console.WriteLine("Prazo Vencido!"); 
    } 
    
    else {
     Console.WriteLine("Prazo em Dia!"); 
    } 
    

    7. Exibindo a Hora Atual em um Fuso Horário Específico

    
    TimeZoneInfo fusoHorario = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); 
    DateTime horaAtualFuso = TimeZoneInfo.ConvertTime(DateTime.Now, fusoHorario); 
    Console.WriteLine($"Hora Atual no Fuso Horário PST: {horaAtualFuso}"); 
    
    

    8. Gerando Sequência de Datas

    
    DateTime dataInicial = new DateTime(2023, 9, 1); 
    DateTime dataFinal = new DateTime(2023, 9, 7); 
    TimeSpan intervalo = TimeSpan.FromDays(1); 
    
    for (DateTime data = dataInicial; data <= dataFinal; data += intervalo) {
     Console.WriteLine(data.ToShortDateString()); 
    }
    
    

    O DESAFIO DA MENSAGEM:

    Desafio: Criando Mensagens de Saudação de Acordo com o Horário

    Neste desafio, você vai criar um programa que identifica o horário do usuário e exibe uma mensagem de acordo com o período do dia. Você vai usar o DateTime para fazer essa mágica acontecer!

    Instruções:

    1. Primeiro, crie um novo projeto de console em C# no seu ambiente de desenvolvimento.
    2. Use o DateTime para pegar o horário atual.
    3. Com base no horário, determine se é "manhã", "tarde", "noite" ou "madrugada".
    4. Crie uma mensagem personalizada para cada período e exiba-a no console.

    Dicas:

    • Manhã: das 5h até 11h59
    • Tarde: das 12h até 17h59
    • Noite: das 18h até 23h59
    • Madrugada: das 0h até 4h59

    Exemplo:

    Se o programa for executado às 8h da manhã, ele deve exibir: $"Bom dia, {nome do usuário}!"

    Agora é com você! Escreva o código, testa aí e compartilha nos comentários a mensagem que o programa exibiu de acordo com o horário em que você rodou o programa. Boa sorte e divirta-se!

    O horário que terminei este artigo foi:

    // Organizado nesta ordem: ano, mês, dia, hora, minuto, segundo
    
    DateTime dataHoraEspecifica = new DateTime(2023, 8, 12, 14, 30, 0);
    
    // resultado: 11/08/2023 23:50:22 PM
    

    Confia que foi, infelizmente não sou mágico pae.

    var date = DateTime.Now();
    Console.WriteLine(date);
    
    // Resultado: 12/08/2023 00:49:27 AM
    

    Irmão, eu fiz isso com muito amor e carinho, da um help no artigo aí! Deus te abençõe.

    Compartilhe
    Comentários (0)