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 ile temsil edilen hourssaat 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 haftanın çalışma vardiyalarını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

Parametrenin hours kesirli kısmı, bir saatin kesirli kısmıdır. Örneğin, 4,5, 4 saat, 30 dakika, 0 saniye, 0 milisaniyeye eşdeğerdir.

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

Not

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

Bir 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 diliminin 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 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 Add .

Şunlara uygulanır

Ayrıca bkz.