Udostępnij za pośrednictwem


DateTimeOffset.AddHours(Double) Metoda

Definicja

Zwraca nowy DateTimeOffset obiekt, który dodaje określoną liczbę godzin całkowitych i ułamkowych do wartości tego wystąpienia.

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

Parametry

hours
Double

Liczba godzin całkowitych i ułamkowych. Liczba może być dodatnia lub ujemna.

Zwraca

Obiekt, którego wartość jest sumą daty i godziny reprezentowanej przez bieżący DateTimeOffset obiekt oraz liczbę godzin reprezentowanych przez hourselement .

Wyjątki

Wynikowa DateTimeOffset wartość jest mniejsza niż DateTimeOffset.MinValue.

-lub-

Wynikowa DateTimeOffset wartość jest większa niż DateTimeOffset.MaxValue.

Przykłady

W poniższym przykładzie użyto AddHours metody , aby wyświetlić listę godzin rozpoczęcia zmian pracy dla określonego tygodnia w biurze, który ma dwie osiem godzin zmian dziennie.

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

Uwagi

Część ułamkowa parametru hours jest częścią ułamkową godziny. Na przykład wartość 4,5 jest równoważna 4 godzinom, 30 minutom, 0 sekundom, 0 milisekundom.

W programie .NET 6 i starszych wersjach hours parametr jest zaokrąglany do najbliższej milisekundy. W programie .NET 7 i nowszych wersjach jest używana pełna Double precyzja parametru hours . Jednak ze względu na nieodłączną nieprawdopodobność matematycznych zmiennoprzecinkowych precyzja wynikowa będzie się różnić.

Uwaga

Ta metoda zwraca nowy DateTimeOffset obiekt. Nie modyfikuje on wartości bieżącego obiektu przez dodanie hours do jego daty i godziny.

DateTimeOffset Ponieważ obiekt nie reprezentuje daty i godziny w określonej strefie czasowej, AddHours metoda nie uwzględnia reguł korekty określonej strefy czasowej podczas wykonywania arytmetyki daty i godziny.

Konwertowanie interwałów czasu krótszych niż godzina na ułamek może obejmować utratę dokładności. (Na przykład jedna minuta to 0,01666 godziny). Jeśli jest to problematyczne, możesz użyć Add metody , która umożliwia określenie więcej niż jednego rodzaju interwału czasu w jednym wywołaniu metody i eliminuje konieczność konwertowania interwałów czasu na części ułamkowe godziny.

Dotyczy

Zobacz też