Comparteix a través de


DateTimeOffset.AddHours(Double) Método

Definición

Devuelve un nuevo objeto DateTimeOffset que agrega un número especificado de horas enteras y fraccionarias al valor de esta instancia.

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

Número de horas enteras y fraccionarias. El número puede ser positivo o negativo.

Devoluciones

Objeto cuyo valor es la suma de la fecha y hora representadas por el objeto DateTimeOffset actual y el número de horas representado por hours.

Excepciones

El valor resultante DateTimeOffset es menor que DateTimeOffset.MinValue.

O bien

El valor resultante DateTimeOffset es mayor que DateTimeOffset.MaxValue.

Ejemplos

En el ejemplo siguiente se usa el AddHours método para enumerar las horas de inicio de turnos de trabajo de una semana determinada en una oficina que tiene dos turnos de ocho horas al día.

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

Comentarios

La parte fraccionarcional del hours parámetro es la parte fraccionarcional de una hora. Por ejemplo, 4,5 equivale a 4 horas, 30 minutos, 0 segundos, 0 milisegundos.

En .NET 6 y versiones anteriores, el hours parámetro se redondea al milisegundo más cercano. En .NET 7 y versiones posteriores, se usa la precisión completa Double del hours parámetro . Sin embargo, debido a la imprecisión inherente de las matemáticas de punto flotante, la precisión resultante variará.

Nota:

Este método devuelve un nuevo DateTimeOffset objeto . No modifica el valor del objeto actual agregando hours a su fecha y hora.

Dado que un DateTimeOffset objeto no representa la fecha y hora en una zona horaria específica, el AddHours método no considera las reglas de ajuste de una zona horaria determinada cuando realiza la aritmética de fecha y hora.

La conversión de intervalos de tiempo de menos de una hora a una fracción puede implicar una pérdida de precisión. (Por ejemplo, un minuto es 0,01666 de una hora). Si esto es problemático, puede usar el Add método , que le permite especificar más de un tipo de intervalo de tiempo en una sola llamada de método y elimina la necesidad de convertir intervalos de tiempo en partes fraccionarios de una hora.

Se aplica a

Consulte también