Partilhar via


DateTimeOffset.AddHours(Double) Método

Definição

Retorna um novo objeto DateTimeOffset que adiciona um número especificado de horas inteiras e fracionárias ao valor dessa instância.

public:
 DateTimeOffset AddHours(double hours);
public DateTimeOffset AddHours (double hours);
member this.AddHours : double -> DateTimeOffset
Public Function AddHours (hours As Double) As DateTimeOffset

Parâmetros

hours
Double

Um número de horas inteiras e fracionárias. O número pode ser positivo ou negativo.

Retornos

Um objeto cujo valor é a soma da data e hora representada pelo objeto DateTimeOffset atual e o número de horas representado por hours.

Exceções

O valor resultante DateTimeOffset é menor que DateTimeOffset.MinValue.

-ou-

O valor resultante DateTimeOffset é maior que DateTimeOffset.MaxValue.

Exemplos

O exemplo a seguir usa o AddHours método para listar os horários de início dos turnos de trabalho para uma semana específica em um escritório que tem dois turnos de oito horas por dia.

const int SHIFT_LENGTH = 8;

DateTimeOffset startTime = new DateTimeOffset(2007, 8, 6, 0, 0, 0,
                     DateTimeOffset.Now.Offset);
DateTimeOffset startOfShift = startTime.AddHours(SHIFT_LENGTH);

Console.WriteLine("Shifts for the week of {0:D}", startOfShift);
do
{
   // Exclude third shift
   if (startOfShift.Hour > 6)
      Console.WriteLine("   {0:d} at {0:T}", startOfShift);

   startOfShift = startOfShift.AddHours(SHIFT_LENGTH);
} while (startOfShift.DayOfWeek != DayOfWeek.Saturday &
           startOfShift.DayOfWeek != DayOfWeek.Sunday);
// The example produces the following output:
//
//    Shifts for the week of Monday, August 06, 2007
//       8/6/2007 at 8:00:00 AM
//       8/6/2007 at 4:00:00 PM
//       8/7/2007 at 8:00:00 AM
//       8/7/2007 at 4:00:00 PM
//       8/8/2007 at 8:00:00 AM
//       8/8/2007 at 4:00:00 PM
//       8/9/2007 at 8:00:00 AM
//       8/9/2007 at 4:00:00 PM
//       8/10/2007 at 8:00:00 AM
//       8/10/2007 at 4:00:00 PM
let shiftLength = 8

let startTime = DateTimeOffset(2007, 8, 6, 0, 0, 0, DateTimeOffset.Now.Offset)
let mutable startOfShift = startTime.AddHours shiftLength

printfn $"Shifts for the week of {startOfShift:D}"
while startOfShift.DayOfWeek <> DayOfWeek.Saturday &&
      startOfShift.DayOfWeek <> DayOfWeek.Sunday do
    // Exclude third shift
    if startOfShift.Hour > 6 then
        printfn $"   {startOfShift:d} at {startOfShift:T}"

    startOfShift <- startOfShift.AddHours shiftLength

// The example produces the following output:
//
//    Shifts for the week of Monday, August 06, 2007
//       8/6/2007 at 8:00:00 AM
//       8/6/2007 at 4:00:00 PM
//       8/7/2007 at 8:00:00 AM
//       8/7/2007 at 4:00:00 PM
//       8/8/2007 at 8:00:00 AM
//       8/8/2007 at 4:00:00 PM
//       8/9/2007 at 8:00:00 AM
//       8/9/2007 at 4:00:00 PM
//       8/10/2007 at 8:00:00 AM
//       8/10/2007 at 4:00:00 PM
Const SHIFT_LENGTH As Integer = 8

Dim startTime As New DateTimeOffset(#8/6/2007 12:00:00AM#, _
                     DateTimeOffset.Now.Offset)
Dim startOfShift As DateTimeOffset = startTime.AddHours(SHIFT_LENGTH)

Console.WriteLine("Shifts for the week of {0:D}", startOfShift)                           
Do 
   ' Exclude third shift
   If startOfShift.Hour > 6 Then _
      Console.WriteLine("   {0:d} at {0:T}", startOfShift)

   startOfShift = startOfShift.AddHours(SHIFT_LENGTH)
Loop While startOfShift.DayOfWeek <> DayOfWeek.Saturday And _
           startOfShift.DayOfWeek <> DayOfWeek.Sunday
          
' The example produces the following output:
'
'    Shifts for the week of Monday, August 06, 2007
'       8/6/2007 at 8:00:00 AM
'       8/6/2007 at 4:00:00 PM
'       8/7/2007 at 8:00:00 AM
'       8/7/2007 at 4:00:00 PM
'       8/8/2007 at 8:00:00 AM
'       8/8/2007 at 4:00:00 PM
'       8/9/2007 at 8:00:00 AM
'       8/9/2007 at 4:00:00 PM
'       8/10/2007 at 8:00:00 AM
'       8/10/2007 at 4:00:00 PM

Comentários

A parte fracionária do hours parâmetro é a parte fracionária de uma hora. Por exemplo, 4,5 é equivalente a 4 horas, 30 minutos, 0 segundos, 0 milissegundos.

No .NET 6 e em versões anteriores, o hours parâmetro é arredondado para o milissegundo mais próximo. No .NET 7 e versões posteriores, a precisão completa Double do hours parâmetro é usada. No entanto, devido à imprecisão inerente da matemática de ponto flutuante, a precisão resultante variará.

Observação

Este método retorna um novo objeto DateTimeOffset. Ele não modifica o valor do objeto atual adicionando hours à sua data e hora.

Como um DateTimeOffset objeto não representa a data e a hora em um fuso horário específico, o AddHours método não considera as regras de ajuste de um fuso horário específico quando executa a aritmética de data e hora.

A conversão de intervalos de tempo de menos de uma hora em uma fração pode envolver uma perda de precisão. (Por exemplo, um minuto é 0,01666 de uma hora.) Se isso for problemático, você poderá usar o Add método , que permite especificar mais de um tipo de intervalo de tempo em uma única chamada de método e eliminará a necessidade de converter intervalos de tempo em partes fracionárias de uma hora.

Aplica-se a

Confira também