Udostępnij za pośrednictwem


DateTime.AddHours(Double) Metoda

Definicja

Zwraca nowy DateTime element, który dodaje określoną liczbę godzin do wartości tego wystąpienia.

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

Parametry

value
Double

Liczba godzin całkowitych i ułamkowych. Parametr value może być ujemny lub dodatni.

Zwraca

Obiekt, którego wartość jest sumą daty i godziny reprezentowanej przez to wystąpienie oraz liczbę godzin reprezentowanych przez valueelement .

Wyjątki

DateTime Wynik jest mniejszy niż DateTime.MinValue lub większy niż DateTime.MaxValue.

Przykłady

W poniższym przykładzie użyto AddHours metody , aby dodać liczbę wartości całkowitych i ułamkowych do daty i godziny. Ilustruje również utratę precyzji spowodowane przekazaniem metody wartości zawierającej składnik ułamek.

using System;

public class Example
{
   public static void Main()
   {
      double[] hours = {.08333, .16667, .25, .33333, .5, .66667, 1, 2,
                        29, 30, 31, 90, 365};
      DateTime dateValue = new DateTime(2009, 3, 1, 12, 0, 0);

      foreach (double hour in hours)
         Console.WriteLine("{0} + {1} hour(s) = {2}", dateValue, hour,
                           dateValue.AddHours(hour));
   }
}
// The example displays the following output on a system whose current
// culture is en-US:
//    3/1/2009 12:00:00 PM + 0.08333 hour(s) = 3/1/2009 12:04:59 PM
//    3/1/2009 12:00:00 PM + 0.16667 hour(s) = 3/1/2009 12:10:00 PM
//    3/1/2009 12:00:00 PM + 0.25 hour(s) = 3/1/2009 12:15:00 PM
//    3/1/2009 12:00:00 PM + 0.33333 hour(s) = 3/1/2009 12:19:59 PM
//    3/1/2009 12:00:00 PM + 0.5 hour(s) = 3/1/2009 12:30:00 PM
//    3/1/2009 12:00:00 PM + 0.66667 hour(s) = 3/1/2009 12:40:00 PM
//    3/1/2009 12:00:00 PM + 1 hour(s) = 3/1/2009 1:00:00 PM
//    3/1/2009 12:00:00 PM + 2 hour(s) = 3/1/2009 2:00:00 PM
//    3/1/2009 12:00:00 PM + 29 hour(s) = 3/2/2009 5:00:00 PM
//    3/1/2009 12:00:00 PM + 30 hour(s) = 3/2/2009 6:00:00 PM
//    3/1/2009 12:00:00 PM + 31 hour(s) = 3/2/2009 7:00:00 PM
//    3/1/2009 12:00:00 PM + 90 hour(s) = 3/5/2009 6:00:00 AM
//    3/1/2009 12:00:00 PM + 365 hour(s) = 3/16/2009 5:00:00 PM
open System

let hours = 
    [ 0.08333; 0.16667; 0.25
      0.33333; 0.5; 0.66667; 1 
      2; 29; 30; 31; 90; 365 ]

let dateValue = DateTime(2009, 3, 1, 12, 0, 0)

for hour in hours do
    printfn $"{dateValue} + {hour} hour(s) = {dateValue.AddHours hour}"
                    

// The example displays the following output on a system whose current
// culture is en-US:
//    3/1/2009 12:00:00 PM + 0.08333 hour(s) = 3/1/2009 12:04:59 PM
//    3/1/2009 12:00:00 PM + 0.16667 hour(s) = 3/1/2009 12:10:00 PM
//    3/1/2009 12:00:00 PM + 0.25 hour(s) = 3/1/2009 12:15:00 PM
//    3/1/2009 12:00:00 PM + 0.33333 hour(s) = 3/1/2009 12:19:59 PM
//    3/1/2009 12:00:00 PM + 0.5 hour(s) = 3/1/2009 12:30:00 PM
//    3/1/2009 12:00:00 PM + 0.66667 hour(s) = 3/1/2009 12:40:00 PM
//    3/1/2009 12:00:00 PM + 1 hour(s) = 3/1/2009 1:00:00 PM
//    3/1/2009 12:00:00 PM + 2 hour(s) = 3/1/2009 2:00:00 PM
//    3/1/2009 12:00:00 PM + 29 hour(s) = 3/2/2009 5:00:00 PM
//    3/1/2009 12:00:00 PM + 30 hour(s) = 3/2/2009 6:00:00 PM
//    3/1/2009 12:00:00 PM + 31 hour(s) = 3/2/2009 7:00:00 PM
//    3/1/2009 12:00:00 PM + 90 hour(s) = 3/5/2009 6:00:00 AM
//    3/1/2009 12:00:00 PM + 365 hour(s) = 3/16/2009 5:00:00 PM
Module Example
   Public Sub Main()
      Dim hours() As Double = {.08333, .16667, .25, .33333, .5, .66667, 1, 2, _
                             29, 30, 31, 90, 365}
      Dim dateValue As Date = #3/1/2009 12:00#
      
      For Each hour As Double In hours
         Console.WriteLine("{0} + {1} hour(s) = {2}", dateValue, hour, _
                           dateValue.AddHours(hour))
      Next                             
   End Sub
End Module
' The example displays the following output on a system whose current
' culture is en-US:
' 3/1/2009 12:00:00 PM + 0.08333 hour(s) = 3/1/2009 12:04:59 PM
' 3/1/2009 12:00:00 PM + 0.16667 hour(s) = 3/1/2009 12:10:00 PM
' 3/1/2009 12:00:00 PM + 0.25 hour(s) = 3/1/2009 12:15:00 PM
' 3/1/2009 12:00:00 PM + 0.33333 hour(s) = 3/1/2009 12:19:59 PM
' 3/1/2009 12:00:00 PM + 0.5 hour(s) = 3/1/2009 12:30:00 PM
' 3/1/2009 12:00:00 PM + 0.66667 hour(s) = 3/1/2009 12:40:00 PM
' 3/1/2009 12:00:00 PM + 1 hour(s) = 3/1/2009 1:00:00 PM
' 3/1/2009 12:00:00 PM + 2 hour(s) = 3/1/2009 2:00:00 PM
' 3/1/2009 12:00:00 PM + 29 hour(s) = 3/2/2009 5:00:00 PM
' 3/1/2009 12:00:00 PM + 30 hour(s) = 3/2/2009 6:00:00 PM
' 3/1/2009 12:00:00 PM + 31 hour(s) = 3/2/2009 7:00:00 PM
' 3/1/2009 12:00:00 PM + 90 hour(s) = 3/5/2009 6:00:00 AM
' 3/1/2009 12:00:00 PM + 365 hour(s) = 3/16/2009 5:00:00 PM

Uwagi

Ta metoda nie zmienia wartości tego DateTimeelementu . Zamiast tego zwraca nową DateTime wartość, której wartość jest wynikiem tej operacji. Właściwość Kind zwróconego DateTime obiektu jest taka sama jak valuewłaściwość .

Część ułamkowa to ułamkowa value część godziny. Na przykład wartość 4,5 jest równoważna 4 godzinom, 30 minutom, 0 sekundom, 0 milisekundom i 0 znacznikom.

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

Konwertowanie interwałów czasu krócej niż godzinę na ułamek może obejmować utratę dokładności, jeśli wynik nie kończy powtarzania się dziesiętnego. (Na przykład jedna minuta to 0,016667 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ść konwersji interwałów czasu na części ułamkowe godziny.

Dotyczy

Zobacz też