DateTimeOffset.AddHours(Double) Metod

Definition

Returnerar ett nytt DateTimeOffset objekt som lägger till ett angivet antal hela timmar och bråktimmar till värdet för den här instansen.

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

Parametrar

hours
Double

Ett antal hela och bråktimmar. Talet kan vara negativt eller positivt.

Returer

Ett objekt vars värde är summan av datum och tid som representeras av det aktuella DateTimeOffset objektet och antalet timmar som representeras av hours.

Undantag

Det resulterande DateTimeOffset värdet är mindre än DateTimeOffset.MinValue.

-eller-

Det resulterande DateTimeOffset värdet är större än DateTimeOffset.MaxValue.

Exempel

I följande exempel används AddHours metoden för att lista starttiderna för arbetsskift under en viss vecka på ett kontor som har två åttatimmarsskift per dag.

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

Kommentarer

Deldelen av parametern hours är deldelen av en timme. Till exempel motsvarar 4,5 4 timmar, 30 minuter, 0 sekunder, 0 millisekunder.

I .NET Framework avrundas parametern hours till närmaste millisekunder. I .NET 7 och senare versioner används den fullständiga Double precisionen för parametern hours. Men på grund av den inneboende oskärningen av flyttalsmatematik varierar den resulterande precisionen.

Note

Den här metoden returnerar ett nytt DateTimeOffset objekt. Det ändrar inte värdet för det aktuella objektet genom att lägga hours till dess datum och tid.

Eftersom ett DateTimeOffset objekt inte representerar datum och tid i en specifik tidszon tar AddHours metoden inte hänsyn till en viss tidszons justeringsregler när den utför datum- och tidsaritmetik.

Att konvertera tidsintervall på mindre än en timme till en bråkdel kan innebära en förlust av precision. (En minut är till exempel 0,01666 i timmen.) Om detta är problematiskt kan du använda Add metoden, som gör att du kan ange mer än en typ av tidsintervall i ett enda metodanrop och eliminerar behovet av att konvertera tidsintervall till bråkdelar i en timme.

Gäller för

Se även