DateTimeOffset.AddHours(Double) 方法

定義

傳回新的 DateTimeOffset 物件,這個物件將這個執行個體的值加上指定的整數和小數時數。

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

參數

hours
Double

整數和小數的時數。 可以是負數或正數。

傳回

物件,其值為目前 DateTimeOffset 物件所代表之日期和時間加上 hours 所代表之時數的總和。

例外狀況

範例

下列範例會 AddHours 使用 方法,在每天有兩個八小時班次的辦公室,列出特定星期的班次開始時間。

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

備註

參數的小 hours 數部分是一小時的小數部分。 例如,4.5 相當於 4 小時、30 分鐘、0 秒、0 毫秒。

在 .NET 6 和舊版中 hours ,參數會四捨五入至最接近的毫秒。 在 .NET 7 和更新版本中,會使用 參數的完整 Doublehours 精確度。 不過,由於浮點數數學的固有不精確性,因此產生的精確度會有所不同。

注意

這個方法會傳回新的 DateTimeOffset 物件。 它不會藉由新增 hours 至目前物件的日期和時間來修改其值。

DateTimeOffset因為 物件不代表特定時區中的日期和時間,所以當方法執行日期和時間算術時, AddHours 不會考慮特定時區的調整規則。

將小於一小時的時間間隔轉換為分數,可能會牽涉到精確度遺失。 (例如,一分鐘是一小時 0.01666.) 如果這有問題,您可以使用 Add 方法,這可讓您在單一方法呼叫中指定一種以上的時間間隔,並不需要將時間間隔轉換為小時的小數部分。

適用於

另請參閱