Skip to content

Latest commit

 

History

History
171 lines (124 loc) · 8.88 KB

File metadata and controls

171 lines (124 loc) · 8.88 KB

Datas e TimeZone C#

/*Console.Clear();
          var data0 = new DateTime(); cria uma nova data, mas ela aparece como 01/01/0001.
          var data1 = DateTime.Now;  pega a hora e data atual da regiao.
          var data2 = new DateTime(2020, 10, 12, 8, 23, 14); cria uma nova data com essses valores 12/10/2020 08:23:14
          var formatada = String.Format("{0:dd/MM/yyyy hh:mm:ss}", data);  aqui ele formata a data de acordo com o que o 
                                                                           desenvolvedor solicitar 

    Console.WriteLine($"{data0}    {data1}    {data2}");
          Console.WriteLine(data0);
          Console.WriteLine(data1);
          Console.WriteLine(data2);
          Console.WriteLine(data1.Year);  obtem somente o ano dessa data
          Console.WriteLine(data1.Month);  obtem somente o mes dessa data
          Console.WriteLine(data1.Day);  obtem somente o dia dessa data
          Console.WriteLine(data1.Hour);  obtem somente as horas dessa data
          Console.WriteLine(data1.Minute);  obtem somente os minutos dessa data
          Console.WriteLine(data1.Second);  obtem somente os segundos dessa data

          Console.WriteLine(data1.DayOfWeek);  obtem o dia da semana dessa data 

          Console.WriteLine(data1.DayOfYear);  obtem o dia do ano

          Console.WriteLine((int)data1.DayOfWeek);  funcao de casting com enumerador, ele pega o numero
                                                     desse dia da semana. ex: 1=domingo, 2=segunda, 3=terça 
    
---------------------------------------------------------------------------------------------------------------------------------    
            Tipos de formatacoes de data
     
            
    var formatada = String.Format("{0:t}", data); = 19:20 . horas compactada (short Time)  
    var formatada = String.Format("{0:T}", data); = 19:23:04 . horas longas 
    var formatada = String.Format("{0:d}", data); = 18/02/2023 . data compactada 
    var formatada = String.Format("{0:D}", data); = sábado, 18 de fevereiro de 2023 . data longa 
    var formatada = String.Format("{0:f}", data); = sábado, 18 de fevereiro de 2023 19:25 . data e hora longa
    var formatada = String.Format("{0:g}", data); = 18/02/2023 19:25 . data e hora curta
    var formatada = String.Format("{0:r}", data); = Sat, 18 Feb 2023 19:28:57 GMT . usado para padroes em sistema
    var formatada = String.Format("{0:s}", data); = 2023-02-18T19:29:53 . usado para o padrao em formato json (usado tbm em no cicle tipo o mongo )
    var formatada = String.Format("{0:u}", data); = 2023-02-18 19:31:53Z . padrao universal, com a zona de area no final
    
---------------------------------------------------------------------------------------------------------------------------------  
            Subtraindo ou adicionando alguma data 

    Console.WriteLine(data);
            Console.WriteLine(data.AddDays(12)); = adiciona a data atual mais 12 dias 
            Console.WriteLine(data.AddDays(-12)); = adiciona a data atual menos 12 dias 
            Console.WriteLine(data.AddMonths(1)); = adiciona a data atual mais 1 mes  
            Console.WriteLine(data.AddYears(1)); = adiciona a data atual mais 1 ano

    podemos subtrair ou adicionar tanto faz (usar sempre esse metodo, pois atualiza automaticamente)

---------------------------------------------------------------------------------------------------------------------------------
            Comparacao de data para entendimento

            
            var data = DateTime.Now;

            if (data == DateTime.Now) {
                Console.WriteLine("e igual");
            }
    nesse exemplo vemos que a infomacao nao e verdadeira, pois o primeiro dateTime e diferente do segundo dateTime, porque apos ele pular para fazer a comparacao ja se passou fracao de segundos e isso faz com que o resultado fique diferente.

    var data = DateTime.Now;

            if (data.Date == DateTime.Now.Date) {
                Console.WriteLine("e igual");
            }
    nesse caso o resultado e igual, pois a data e igual, tbm nao tem a comparacao de tempo, mas somente a de data.
    podemos fazer qualquer tipo de comparacao de data.

---------------------------------------------------------------------------------------------------------------------------------

            Usando o globalization para reconhecer as regioes com data e hora

    var pt = new CultureInfo("pt-PT");
            var br = new CultureInfo("pt-BR");
            var en = new CultureInfo("en-US");
            var de = new CultureInfo("de-DE");
            var atual = CultureInfor.CurrentCulture; = pega a cultura atual da maquina (pode ocorrer de pega a cultura do servidor tbm, se o servidor estiver localizado em outro pais, vai pegar o padrao daquele pais)

            Console.WriteLine(DateTime.Now.ToString("D",pt));
            Console.WriteLine(DateTime.Now.ToString("D", br));
            Console.WriteLine(DateTime.Now.ToString("D", en));
            Console.WriteLine(DateTime.Now.ToString("D", de));

RESULTADO =>     sábado, 18 de fevereiro de 2023
                 sábado, 18 de fevereiro de 2023
                 Saturday, February 18, 2023
                 Samstag, 18.Februar 2023

---------------------------------------------------------------------------------------------------------------------------------
            Fazendo conversao de timeZone, data e hora de acordo com a regiao 

    var utcDate = DateTime.UtcNow;  hora atual em sem timeZone

            Console.WriteLine(DateTime.Now);  data e hora atual da maquina
            Console.WriteLine(utcDate); 
            Console.WriteLine(utcDate.ToLocalTime());  pega o valor da variavel e converte o valor de acordo com timeZone

            var timeZoneAustralia = TimeZoneInfo.FindSystemTimeZoneById("Pacific/Auckland");  aqui ele pega somente o timeZone
            Console.WriteLine(timeZoneAustralia);

            var horaAustralia = TimeZoneInfo.ConvertTimeFromUtc(utcDate, timeZoneAustralia);  ele pega a data e hora, junto com o timeZone que declaramos e junta os dois.
            Console.WriteLine(horaAustralia);

---------------------------------------------------------------------------------------------------------------------------------

    var utcZone = DateTime.UtcNow;
              var timeZones = TimeZoneInfo.GetSystemTimeZones();
            foreach (var timezone in timeZones) {

                Console.WriteLine(timezone.Id);
                Console.WriteLine(timezone);
                Console.WriteLine(TimeZoneInfo.ConvertTimeFromUtc(utcZone,timezone));
                Console.WriteLine("-----------");    

            }

            aqui ele lista todas as regioes e e o timeZone de todos.

---------------------------------------------------------------------------------------------------------------------------------

                Usando o timeSpan (ele serve para tratar horas minutos, segundos, nanoSegundos. para calcular ultilizado normalmente para controle de horas de funcionario de grandes empresas) 

    var timeSpan = new TimeSpan();
             Console.WriteLine(timeSpan);

             var timeSpanNanosegundos = new TimeSpan(1);
             Console.WriteLine(timeSpanNanosegundos);

             var timeSpanHoraMinutoSegundo = new TimeSpan(5, 12, 8);
             Console.WriteLine(timeSpanHoraMinutoSegundo);

             var timeSpanDiaHoraMinutoSegundo = new TimeSpan(3, 5, 50, 10);
             Console.WriteLine(timeSpanDiaHoraMinutoSegundo);

             var timeSpanDiaHoraMinutoSegundoMilissegundo = new TimeSpan(15, 12, 55, 8, 100);
             Console.WriteLine(timeSpanDiaHoraMinutoSegundoMilissegundo);

             Console.WriteLine(timeSpanHoraMinutoSegundo - timeSpanDiaHoraMinutoSegundo);
             Console.WriteLine(timeSpanDiaHoraMinutoSegundo.Days);
             Console.WriteLine(timeSpanDiaHoraMinutoSegundo.Add(new TimeSpan(12, 0, 0)));

            RESULTADO =>    00:00:00
                            00:00:00.0000001
                            05:12:08
                            3.05:50:10
                            15.12:55:08.1000000
                            -3.00:38:02
                            3
                            3.17:50:10

            Console.WriteLine(DateTime.DaysInMonth(2020, 2)); aqui ele quer saber, quantos dias tem o mes de fevereiro do ano de 2020.
            Console.WriteLine(IsWeekend(DateTime.Now.DayOfWeek)); ele mostrar o resultado para saber se hoje e final de semana
            Console.WriteLine(DateTime.Now.IsDaylightSavingTime()); quer saber se estamos no horario de verao
        }

        static bool IsWeekend(DayOfWeek today) { comparando o dia da semana escolhido com o dia de hoje 

            return today == DayOfWeek.Saturday  hoje e igual a sabado || today == DayOfWeek.Sunday;   ou igual a domingo 
    
    tipo booleano vai trazer falso ou verdadeiro caso aquele dia seja fim de semana

    RESULTADO =>    29
                    True
                    False

     */