Aracılığıyla paylaş


DateTimeOffset.AddHours(Double) Yöntem

Tanım

Bu örneğin değerine belirtilen sayıda tam ve kesirli saat ekleyen yeni DateTimeOffset bir nesne döndürür.

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

Parametreler

hours
Double

Tam ve kesirli saat sayısı. Sayı negatif veya pozitif olabilir.

Döndürülenler

Değeri geçerli DateTimeOffset nesneyle temsil edilen tarih ve saatin toplamı ve tarafından hourstemsil edilen saat sayısı olan bir nesne.

Özel durumlar

Sonuçta elde edilen DateTimeOffset değer DateTimeOffset.MinValue değerinden küçüktür.

-veya-

Sonuçta elde edilen DateTimeOffset değer DateTimeOffset.MaxValue değerinden büyüktür.

Örnekler

Aşağıdaki örnek, günde iki sekiz saatlik vardiyası olan bir ofiste belirli bir hafta için vardiyaların başlangıç saatlerini listelemek için yöntemini kullanır 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

Açıklamalar

Parametresinin hours kesirli bölümü, bir saatin kesirli kısmıdır. Örneğin, 4,5, 4 saat, 30 dakika, 0 saniye, 0 milisaniyeye eşdeğerdir.

.NET Framework'te hours parametresi en yakın milisaniyeye yuvarlanmıştır. .NET 7 ve sonraki sürümlerde parametresinin Double tam hours duyarlığı kullanılır. Ancak kayan nokta matematiğin doğası gereği kesinlik nedeniyle elde edilen duyarlık farklılık gösterir.

Uyarı

Bu yöntem yeni DateTimeOffset bir nesne döndürür. Geçerli nesnenin değerini tarih ve saatine ekleyerek hours değiştirmez.

Nesne belirli bir DateTimeOffset saat dilimindeki tarih ve saati temsil etmediğinden, AddHours yöntem tarih ve saat aritmetiği gerçekleştirirken belirli bir saat dilimi ayarlama kurallarını dikkate almaz.

Bir saatten kısa zaman aralıklarının kesire dönüştürülmesi, duyarlık kaybına neden olabilir. (Örneğin, bir dakika bir saatin 0,01666'dır.) Bu sorunluysa, tek bir yöntem çağrısında Add birden fazla zaman aralığı türü belirtmenize olanak tanıyan ve zaman aralıklarını bir saatin kesirli bölümlerine dönüştürme gereksinimini ortadan kaldıran yöntemini kullanabilirsiniz.

Şunlara uygulanır

Ayrıca bkz.