DateTimeOffset.AddHours(Double) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 hours
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 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 .