English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O C# inclui a estrutura DateTime para manipulação de datas e horários.
Para usar data e hora no C#, use a palavra-chave new para criar um objeto da estrutura DateTime. Abaixo cria-se um objeto DateTime com valor padrão.
DateTime dt = new DateTime(); // Atribui valor padrão 01/01/0001 00:00:00
Os valores padrão e mínimo do objeto DateTime são 0001Ano1Mês100:00:00 (meia-noite). O valor máximo pode ser9999Ano12Mês31No final do dia11:59:59
Use diferentes construtores da estrutura DateTime para atribuir valor inicial a objetos DateTime.
//Atribui valor padrão 01/01/0001 00:00:00 DateTime dt1 = new DateTime(); //Atribui ano, mês, dia DateTime dt2 = new DateTime(2015, 12, 31); //Atribui ano, mês, dia, hora, min, segundos DateTime dt3 = new DateTime(2015, 12, 31, 5, 10, 20); //Atribui ano, mês, dia, hora, min, segundos, fuso horário UTC DateTime dt4 = new DateTime(2015, 12, 31, 5, 10, 2, DateTimeKind.Utc);
No exemplo acima, especificamos o ano, mês e dia no construtor. O ano pode ser 0001até9999, o mês pode ser1até12, a data pode ser1até31. Qualquer valor fora desses intervalos configurado como outro valor causará exceção em tempo de execução.
DateTime dt = new DateTime(2015, 12, 32); //Gera exceção: dia fora do intervalo
Use diferentes construtores DateTime para configurar data, hora, fuso horário, calendário e regionalidade.
Ticks é uma data e hora, a partir de 00:00:00.000 do calendário gregoriano1Mês1Desde o dia10O número de intervalos de 0 nanosécondes representa. Abaixo inicializamos um objeto DateTime com ticks.
DateTime dt = new DateTime(636370000000000000); DateTime.MinValue.Ticks; //Mínimo de ticks DateTime.MaxValue.Ticks; // Máximo de ticks
A estrutura DateTime inclui campos estáticos, propriedades e métodos. Abaixo está um exemplo que demonstra os campos estáticos e propriedades importantes.
DateTime currentDateTime = DateTime.Now; //Retorna a data e hora atual DateTime todaysDate = DateTime.Today; // Retorna a data de hoje DateTime currentDateTimeUTC = DateTime.UtcNow;// Retorna a data e hora UTC atual DateTime maxDateTimeValue = DateTime.MaxValue; // Retorna o valor máximo de DateTime DateTime minDateTimeValue = DateTime.MinValue; // Retorna o valor mínimo de DateTime
TimeSpan é uma estrutura usada para representar tempo em dias, horas, minutos, segundos e milissegundos.
DateTime dt = new DateTime(2015, 12, 31); TimeSpan ts = new TimeSpan(25,20,55); DateTime newDate = dt.Add(ts); Console.WriteLine(newDate);//1/1/2016 1:20:55 AM
A subtração de duas datas resulta em TimeSpan.
DateTime dt1 = new DateTime(2015, 12, 31); DateTime dt2 = new DateTime(2016, 2, 2); TimeSpan result = dt2.Subtract(dt1);//33.00:00:00
Sobrecarga de estrutura DateTime+,-Os operadores ==!=,>,<,<=,>= simplificam a adição, subtração e comparação de datas. Isso nos facilita o manuseio de datas.
DateTime dt1 = new DateTime(2015, 12, 20); DateTime dt2 = new DateTime(2016, 12, 31, 5, 10, 20); TimeSpan time = new TimeSpan(10, 5, 25, 50); Console.WriteLine(dt2 + time); // 1/10/2017de manhã10:36:10 Console.WriteLine(dt2 - dt1); //377.05:10:20 Console.WriteLine(dt1 == dt2); //False Console.WriteLine(dt1 != dt2); //True Console.WriteLine(dt1 > dt2); //False Console.WriteLine(dt1 < dt2); //True Console.WriteLine(dt1 >= dt2); //False Console.WriteLine(dt1 <= dt2);//True
A estrutura DateTime contém os seguintes métodos para converter datas e horários em strings.
Método | Descrição |
---|---|
ToString | Converte o valor DateTime para uma string com um formato especificado na região atual. |
ToShortDateString | Converte o valor DateTime para uma string de data curta na região atual (M)./d/no formato yyyy). |
ToShortTimeString | Converte o valor DateTime para uma string de tempo curto na região atual (h: mm: ss). |
ToLongDateString | Converte o valor DateTime para uma string de data longa na região atual (dddd, MMMM d, yyyy). |
ToLongTimeString | Converte o valor DateTime para uma string de tempo longo no formato da região atual (h:mm:ss tt). |
O exemplo a seguir demonstra como converter DateTime para diferentes formatos de string.
var dt = DateTime.Now; Console.WriteLine("Date String Current Culture: "); + dt.ToString("d")); Console.WriteLine("MM/dd/yyyy Format:"); + dt.ToString("MM/dd/yyyy")); Console.WriteLine("dddd, dd MMMM yyyy Format:"); + dt.ToString("dddd, dd MMMM yyyy")); Console.WriteLine("MM/dd/yyyy h:mm tt Format:"); + dt.ToString("MM/dd/yyyy h:mm tt")); Console.WriteLine("MMMM dd Format:"); + dt.ToString("MMMM dd")); Console.WriteLine("HH:mm:ss Format:"); + dt.ToString("HH:mm:ss")); Console.WriteLine("hh:mm tt Format:"); + dt.ToString("hh:mm tt")); Console.WriteLine("Short Date String: "); + dt.ToShortDateString()); Console.WriteLine("Long Date String: "); + dt.ToLongDateString()); Console.WriteLine("Short Time String: "); + dt.ToShortTimeString()); Console.WriteLine("Long Time String: "); + dt.ToLongTimeString());
Os métodos Parse (), ParseExact (), TryParse () e TryParseExact () podem ser usados para converter strings de data e hora válidas em objetos DateTime.
Se a string especificada não for uma representação válida de data e hora, os métodos Parse () e ParseExact () lançarão uma exceção. Portanto, é recomendável usar os métodos TryParse () ou TryParseExact (), pois, se a string for inválida, eles retornarão false.
var str = "5/12/2020"; DateTime dt; var isValidDate = DateTime.TryParse(str, out dt); if(isValidDate) Console.WriteLine(dt); else Console.WriteLine($"{str} não é uma string de data válida");