C# DateOnly

Resumo : neste tutorial, você aprenderá sobre C# DateOnlye como usá-lo de forma eficaz para gerenciar dados somente de data.

Introdução ao tipo C# DateOnly

O .NET 6 introduziu o DateOnlytipo que representa uma data específica sem um componente de hora. Assim como o DateTimetipo, o DateOnlytem um intervalo de 0001-01-01até 9999-12-31.

O DateOnlytipo é adequado para representar uma data específica, como data de nascimento, data da fatura e data de vencimento.

O DateOnlyé uma estrutura, portanto é imutável. Em outras palavras, a DateOnlynão pode ser alterado depois de criado.

Para criar um novo DateOnlyobjeto, você usa o seguinte construtor:

DateOnly(int year, int month, int day);Linguagem de código:  C#  ( cs )

Por exemplo, o seguinte cria um DateOnlyobjeto que representa January 31, 2023:

var d = new DateOnly(2023, 1, 31);Linguagem de código:  C#  ( cs )

O DateOnlyobjeto possui as propriedades Year, Monthe Dayque representam o ano, mês e dia da data:

using static System.Console;

var d = new DateOnly(2023, 1, 31);

WriteLine(d.Year);
WriteLine(d.Month);
WriteLine(d.Day);Linguagem de código:  C#  ( cs )

Saída:

2023
1
31Linguagem de código:  C#  ( cs )

Além disso, você pode usar o Parse()método estático da DateOnlyclasse para analisar uma sequência de data em uma DateOnlyinstância.

Por exemplo, o seguinte analisa a string "2023-01-31"em uma DateOnlyinstância:

var d = DateOnly.Parse("2023-01-31");Linguagem de código:  C#  ( cs )

Operações somente data

Depois de ter um DateOnlyobjeto, você pode usá-lo para realizar diversas operações, como comparar dois DateOnlyobjetos, adicionar ou subtrair dias, meses ou anos de um DateOnlyobjeto e formatar um DateOnlyobjeto como uma string.

Comparando dois objetos DateOnly

O exemplo a seguir ilustra como comparar dois DateOnlyobjetos:

using static System.Console;

var d1 = DateOnly.Parse("2023-01-31");
var d2 = DateOnly.Parse("2023-01-30");

if (d1 < d2)
{
    WriteLine($"{d1} is ealier than {d2}");
}
else
{
    WriteLine($"{d1} is after than {d2}");
}Linguagem de código:  C#  ( cs )

Saída:

1/31/2023 is after than 1/30/2023Linguagem de código:  C#  ( cs )

Adicionando ou subtraindo dias, meses ou anos de uma instância DateOnly

O exemplo a seguir ilustra como adicionar 7 dias a um DateOnlyobjeto:

using static System.Console;

var d = new DateOnly(2023, 1, 31);
var sevenDaysLater = d.AddDays(7);

WriteLine(sevenDaysLater.ToString());Linguagem de código:  C#  ( cs )

Saída:

2/7/2023Linguagem de código:  C#  ( cs )

Para subtrair o número de dias de um DateOnlyobjeto, você também usa o AddDays()método, mas passa um número negativo como este:

using static System.Console;

var d = new DateOnly(2023, 1, 31);
var sevenDaysBefore = d.AddDays(-7);

WriteLine(sevenDaysBefore.ToString());Linguagem de código:  C#  ( cs )

Saída:

1/24/2023Linguagem de código:  C#  ( cs )

Como os métodos AddDays(), AddMonths()e AddYears()retornam um DateOnlyobjeto, você pode encadeá-los.

Por exemplo, o seguinte adiciona 2 meses e 1 ano a um DateOnlyobjeto:

using static System.Console;

var d = new DateOnly(2023, 1, 31);
var newDate= d.AddMonths(2).AddYears(1);

WriteLine(newDate.ToString());Linguagem de código:  C#  ( cs )

Saída:

3/31/2024Linguagem de código:  C#  ( cs )

Formatando um objeto DateOnly como uma string

O seguinte formata um DateOnlyobjeto como uma string:

using static System.Console;

var d = new DateOnly(2023, 1, 31);

WriteLine(d.ToString("D"));Linguagem de código:  C#  ( cs )

Saída:

Tuesday, January 31, 2023Linguagem de código:  C#  ( cs )

Neste exemplo, usamos o especificador de formato “D” para formatar o DateOnlyobjeto. Para uma string de formato de data abrangente, confira esta página .

DataSomente vs. Datahora

A tabela a seguir compara o DateOnlycom o DateTimetipo:

Recurso Somente data Data hora
Representa Uma data sem componente de tempo Um componente de data e hora
Imutável Sim Não
Tamanho 8 bytes 16 bytes
Serialização Serializa apenas o componente de data Serializa os componentes de data e hora
Casos de uso Quando você só precisa representar uma data, como um aniversário ou um feriado Quando você precisa representar uma data e hora, como um carimbo de data/hora ou horário de uma reunião

Resumo

  • Use o DateOnlytipo C# para trabalhar com dados somente de data.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *