C# DateTimeOffset

Resumo : neste tutorial, você aprenderá como usar C# DateTimeOffsetpara lidar com valores de data e hora com deslocamento de fuso horário.

Introdução ao tipo C# DateTimeOffset

C# DateTimeOffsetrepresenta um valor de data e hora que consiste em dois componentes:

  • O DateTimerepresenta a data e a hora.
  • O offsetrepresenta a diferença entre a hora local e o UTC.

O offseté expresso como o número de horas e minutos à frente ou atrás do UTC:

+HH:MMLinguagem de código:  CSS  ( css )

Ou

-HH:MMLinguagem de código:  CSS  ( css )

Por exemplo:

5/15/2023 10:46:09 AM -07:00

Neste DateTimeOffsetexemplo, o DateTimecomponente é 5/15/2023 10:46:09 AMe o componente de deslocamento é -07:00.

Criando um valor DateTimeOffset

Para criar um DateTimeOffsetobjeto, você usa o DateTimeOffsetconstrutor do e inicializa-o com um DateTimevalor e um deslocamento. Por exemplo:

using static System.Console;

var dateTimeOffset = new DateTimeOffset(
    new DateTime(2023, 5, 15, 7, 0, 0),
    new TimeSpan(-7, 0, 0)
);

WriteLine(dateTimeOffset);Linguagem de código:  C#  ( cs )

Saída:

5/15/2023 7:00:00 AM -07:00Linguagem de código:  C#  ( cs )

Neste exemplo, usamos TimeSpanpara criar um deslocamento para o DateTimeOffsetobjeto.

Para obter a data e hora atuais com deslocamento de fuso horário, você pode usar a Nowpropriedade:

using static System.Console;

WriteLine(DateTime.Now);
WriteLine(DateTimeOffset.Now);Linguagem de código:  CSS  ( css )

Saída:

5/15/2023 10:46:09 AM
5/15/2023 10:46:09 AM -07:00

Acessando propriedades DateTimeOffset

O DateTimeOffsettem muitas propriedades úteis, incluindo Year, Month, Day, Hour, Minutee Second, e Offset:

using static System.Console;

var dateTimeOffset = new DateTimeOffset(
    new DateTime(2023, 5, 15, 7, 0, 0),
    new TimeSpan(-7, 0, 0)
);

// year, month, day, hour, minute, and second 
WriteLine(dateTimeOffset.Year);
WriteLine(dateTimeOffset.Month);
WriteLine(dateTimeOffset.Day);
WriteLine(dateTimeOffset.Hour);
WriteLine(dateTimeOffset.Minute);
WriteLine(dateTimeOffset.Second);

// offset
WriteLine(dateTimeOffset.Offset);Linguagem de código:  JavaScript  ( javascript )

Usando o DateTimeOffset para encontrar o fuso horário atual

O exemplo a seguir mostra como usar DateTimeOffsete TimeZoneInfopara localizar o fuso horário atual do sistema e exibi-los no console:

using static System.Console;

var time = DateTimeOffset.Now;

// find the timezone
foreach (var timezone in TimeZoneInfo.GetSystemTimeZones())
{
    if (timezone.GetUtcOffset(time) == time.Offset)
    {
        WriteLine(timezone);
    }
}Linguagem de código:  C#  ( cs )

O programa mostra uma lista dos fusos horários atuais.

Como funciona:

  • Defina uma variável timee inicialize-a na DateTimeOffset.Nowpropriedade. Representa timea data e hora atuais, incluindo o deslocamento do fuso horário.
  • Itere todos os fusos horários disponíveis no sistema usando o GetSystemTimeZonesmétodo. Dentro do loop, verifique se o deslocamento UTC do fuso horário atual é igual ao deslocamento do objeto de hora usando o GetUtcOffset()método.
  • Se o deslocamento do fuso horário corresponder ao deslocamento do objeto de tempo, isso significa que o fuso horário atual é aquele que estamos procurando e o exibe no console.

Resumo

  • Use o C# DateTimeOffsetquando precisar trabalhar com fusos horários e representar o mesmo momento em vários fusos horários.

Deixe um comentário

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