C# somente tempo

Resumo : neste tutorial, você aprenderá sobre o TimeOnlytipo C# e como usá-lo para gerenciar dados somente de tempo de maneira eficaz.

Introdução ao tipo C# TimeOnly

O .NET 6 introduziu o TimeOnlytipo que representa um valor de hora do dia. O TimeOnlytipo varia de 00:00:00.0000000 –  23:59:59.9999999.

Para criar um novo TimeOnlyobjeto, você usa um de seus construtores. Por exemplo, o seguinte cria um TimeOnlyobjeto com hora, minuto e segundo que representa 15:30:20:

var t = new TimeOnly(15, 30, 20);Linguagem de código:  C#  ( cs )

Depois de ter a TimeOnlyinstância, você pode acessar as propriedades Hour, Minutee :Second

using static System.Console;

var t = new TimeOnly(15, 30, 20);

WriteLine(t.Hour);
WriteLine(t.Minute);
WriteLine(t.Second);Linguagem de código:  C#  ( cs )

Saída:

15
30
20Linguagem de código:  C#  ( cs )

Observe que o TimeOnlyconstrutor possui sobrecargas que também aceitam milissegundos e microssegundos.

Se você tiver um DateTimeobjeto, poderá convertê-lo em um TimeOnlyobjeto chamando o DateTimemétodo estático From do TimeOnlyobjeto:

using static System.Console;

var t = TimeOnly.FromDateTime(DateTime.Now);

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

Saída:

9:43 AMLinguagem de código:  C#  ( cs )

Observe que sua saída dependerá do tempo em que você executa o programa.

Como um DateTimetipo, TimeOnlypossui os métodos Parse()e ParseExact()estáticos que analisam uma string em uma TimeOnlyinstância. Por exemplo:

using static System.Console;

var t = TimeOnly.Parse("10:20:30");

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

Saída:

10:20 AMLinguagem de código:  C#  ( cs )

Ajustando o tempo

Depois de ter uma TimeOnlyinstância, você pode ajustá-la usando os métodos AddHours, AddMinutese .Add

Adicionando ou subtraindo horas

O AddHoursmétodo pega um número inteiro e ajusta a hora da TimeOnlyinstância de acordo. O exemplo a seguir usa o AddHoursmétodo () para adicionar duas horas a um horário:

using static System.Console;

var t = TimeOnly.Parse("10:20:30");
t = t.AddHours(2);

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

Saída:

12:20 PMLinguagem de código:  C#  ( cs )

Para subtrair horas do tempo, você pode usar um valor negativo no AddHours()método. Por exemplo, o seguinte usa o AddHours()método para subtrair três horas de um horário:

using static System.Console;

var t = TimeOnly.Parse("10:20:30");
t = t.AddHours(-3);

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

Saída:

7:20 AMLinguagem de código:  C#  ( cs )

Adicionando ou subtraindo minutos

O AddMinutes()método adiciona ou subtrai minutos de um tempo. Por exemplo:

using static System.Console;

var t = TimeOnly.Parse("10:20:30");

// Add 10 minutes
t = t.AddMinutes(10);
WriteLine(t);

// Subtract 30 minutes
t = t.AddMinutes(-30);
WriteLine(t);Linguagem de código:  C#  ( cs )

Saída:

10:30 AM
10:00 AMLinguagem de código:  C#  ( cs )

Adicionando ou subtraindo um carimbo de data/hora

O Add()método adiciona ou subtrai um carimbo de data/hora de uma hora. O exemplo a seguir ilustra como adicionar um carimbo de data/hora de 2 horas, 40 minutos e 0 segundos a um TimeOnlyobjeto:

using static System.Console;

var t = TimeOnly.Parse("10:20:30");

// Add a timestamp 2 hours, 40 minutes, 0 seconds
t = t.Add(new TimeSpan(2,40,0));

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

Saída:

1:00 PMLinguagem de código:  C#  ( cs )

Comparando tempo

Para comparar duas TimeOnlyinstâncias, você pode usar os operadores >, >=, <, <= e ==. Por exemplo:

using static System.Console;

var t1 = new TimeOnly(12, 30, 0);
var t2 = new TimeOnly(12, 40, 0);

if (t1 < t2)
{
    WriteLine("t1 is before t2");
}
else
{
    WriteLine("t1 is after t2");
}Linguagem de código:  C#  ( cs )

Saída:

t1 is before t2Linguagem de código:  C#  ( cs )

Hora de formatação

O TimeOnlyfornece dois métodos úteis para formatar horários, incluindo ToShortTimeStringe ToLongTimeString:

using static System.Console;

var t1 = new TimeOnly(12, 30, 15);


WriteLine(t1.ToLongTimeString());
WriteLine(t1.ToShortTimeString());Linguagem de código:  C#  ( cs )

Saída:

12:30:15 PM
12:30 PMLinguagem de código:  C#  ( cs )

Como alternativa, você pode usar os especificadores de formato para formatar a hora. Por exemplo:

using static System.Console;

var t = new TimeOnly(14, 30, 15);

WriteLine(t.ToString("hh:mm:ss tt"));
WriteLine(t.ToString("HH:mm:ss"));Linguagem de código:  C#  ( cs )

Saída:

02:30:15 PM
14:30:15Linguagem de código:  C#  ( cs )

Neste exemplo, usamos os seguintes especificadores de formato:

  • HH: Horas de dois dígitos no formato de 24 horas (por exemplo, 00 a 23).
  • mm: Minutos de dois dígitos (por exemplo, 00 a 59).
  • ss: Segundos de dois dígitos (por exemplo, 00 a 59).
  • hh: Horas de dois dígitos no formato de 12 horas (por exemplo, 01 a 12).
  • tt: AM/ PMdesignador.

TimeOnly x DateTime

A tabela a seguir ilustra as diferenças entre TimeOnlyos DateTimetipos e:

Recurso Somente tempo Data hora
Representa Hora do dia Data e hora
Faixa 00:00:00.0000000 - 23:59:59.9999999 Mais seguro de usar para valores de hora do dia
Serialização Serializa menos dados Serializa mais dados
Digite segurança recurso Isso pode levar a exceções OutOfRange se usado para valores de hora do dia
Casos de uso Isso pode levar a exceções OutOfRange se usado para valores de hora do dia. Quando você precisa representar a data e a hora.

Resumo

  • Use o C# TimeOnlypara representar uma hora do dia.

Deixe um comentário

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