Condividi tramite


DateTimeOffset.AddHours(Double) Metodo

Definizione

Restituisce un nuovo DateTimeOffset oggetto che aggiunge un numero specificato di ore intere e frazionarie al valore di questa istanza.

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

Parametri

hours
Double

Numero di ore intere e frazionarie. Il numero può essere negativo o positivo.

Valori restituiti

Oggetto il cui valore è la somma della data e dell'ora rappresentate dall'oggetto corrente DateTimeOffset e il numero di ore rappresentate da hours.

Eccezioni

Il valore risultante DateTimeOffset è minore di DateTimeOffset.MinValue.

oppure

Il valore risultante DateTimeOffset è maggiore di DateTimeOffset.MaxValue.

Esempio

Nell'esempio seguente viene utilizzato il AddHours metodo per elencare le ore di inizio dei turni di lavoro per una determinata settimana in un ufficio con due turni di otto ore al giorno.

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

Commenti

La parte frazionaria del hours parametro è la parte frazionaria di un'ora. Ad esempio, 4,5 equivale a 4 ore, 30 minuti, 0 secondi, 0 millisecondi.

In .NET Framework il hours parametro viene arrotondato al millisecondo più vicino. In .NET 7 e versioni successive viene usata la precisione completa Double del hours parametro. Tuttavia, a causa dell'imprecisione intrinseca della matematica a virgola mobile, la precisione risultante varia.

Annotazioni

Questo metodo restituisce un nuovo DateTimeOffset oggetto. Non modifica il valore dell'oggetto corrente aggiungendo hours alla data e all'ora.

Poiché un DateTimeOffset oggetto non rappresenta la data e l'ora in un fuso orario specifico, il AddHours metodo non considera le regole di regolazione di un particolare fuso orario quando esegue l'aritmetica di data e ora.

La conversione di intervalli di tempo inferiori a un'ora in una frazione può comportare una perdita di precisione. Ad esempio, un minuto è 0,01666 di un'ora. In caso di problemi, è possibile usare il Add metodo , che consente di specificare più di un tipo di intervallo di tempo in una singola chiamata al metodo ed elimina la necessità di convertire gli intervalli di tempo in parti frazionarie di un'ora.

Si applica a

Vedi anche