Resumo : neste tutorial, você aprenderá sobre o TimeOnly
tipo 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 TimeOnly
tipo que representa um valor de hora do dia. O TimeOnly
tipo varia de 00:00:00.0000000
– 23:59:59.9999999
.
Para criar um novo TimeOnly
objeto, você usa um de seus construtores. Por exemplo, o seguinte cria um TimeOnly
objeto 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 TimeOnly
instância, você pode acessar as propriedades Hour
, Minute
e :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
20
Linguagem de código: C# ( cs )
Observe que o TimeOnly
construtor possui sobrecargas que também aceitam milissegundos e microssegundos.
Se você tiver um DateTime
objeto, poderá convertê-lo em um TimeOnly
objeto chamando o DateTime
método estático From do TimeOnly
objeto:
using static System.Console;
var t = TimeOnly.FromDateTime(DateTime.Now);
WriteLine(t);
Linguagem de código: C# ( cs )
Saída:
9:43 AM
Linguagem de código: C# ( cs )
Observe que sua saída dependerá do tempo em que você executa o programa.
Como um DateTime
tipo, TimeOnly
possui os métodos Parse()
e ParseExact()
estáticos que analisam uma string em uma TimeOnly
instâ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 AM
Linguagem de código: C# ( cs )
Ajustando o tempo
Depois de ter uma TimeOnly
instância, você pode ajustá-la usando os métodos AddHours
, AddMinutes
e .Add
Adicionando ou subtraindo horas
O AddHours
método pega um número inteiro e ajusta a hora da TimeOnly
instância de acordo. O exemplo a seguir usa o AddHours
mé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 PM
Linguagem 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 AM
Linguagem 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 AM
Linguagem 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 TimeOnly
objeto:
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 PM
Linguagem de código: C# ( cs )
Comparando tempo
Para comparar duas TimeOnly
instâ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 t2
Linguagem de código: C# ( cs )
Hora de formatação
O TimeOnly
fornece dois métodos úteis para formatar horários, incluindo ToShortTimeString
e 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 PM
Linguagem 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:15
Linguagem 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
/PM
designador.
TimeOnly x DateTime
A tabela a seguir ilustra as diferenças entre TimeOnly
os DateTime
tipos 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#
TimeOnly
para representar uma hora do dia.