DateTime.AddHours(Double) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un nuovo oggetto DateTime che aggiunge il numero specificato di ore al valore di questa istanza.
public:
DateTime AddHours(double value);
public DateTime AddHours (double value);
member this.AddHours : double -> DateTime
Public Function AddHours (value As Double) As DateTime
Parametri
- value
- Double
Numero di ore intere e frazionarie. Il parametro value
può essere negativo o positivo.
Restituisce
Oggetto il cui valore è la somma della data e dell'ora rappresentate dall'istanza e del numero di ore rappresentato da value
.
Eccezioni
Il risultato DateTime è minore di DateTime.MinValue o maggiore di DateTime.MaxValue.
Esempio
Nell'esempio seguente viene utilizzato il AddHours metodo per aggiungere un numero di valori interi e frazionari a una data e un'ora. Illustra anche la perdita di precisione causata dal passaggio del metodo a un valore che include un componente frazionaria.
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
Commenti
Questo metodo non modifica il valore di .DateTime Restituisce invece un nuovo DateTime valore il cui valore è il risultato di questa operazione. La Kind proprietà dell'oggetto restituito DateTime è uguale a quella di value
.
La parte frazionaria di value
è la parte frazionaria di un'ora. Ad esempio, 4,5 equivale a 4 ore, 30 minuti, 0 secondi, 0 millisecondi e 0 tick.
In .NET 6 e versioni precedenti il value
parametro viene arrotondato al millisecondo più vicino. In .NET 7 e versioni successive viene usata la precisione completa Double del value
parametro. Tuttavia, a causa dell'inesattezza intrinseca della matematica a virgola mobile, la precisione risultante varia.
La conversione di intervalli di tempo inferiori a un'ora in una frazione può comportare una perdita di precisione se il risultato è un decimale ripetuto non irreversibile. Ad esempio, un minuto è 0,016667 di un'ora. In caso di problemi, è possibile usare il Add metodo , che consente di specificare più tipi di intervallo di tempo in una singola chiamata al metodo ed elimina la necessità di convertire gli intervalli di tempo in parti frazionarie di un'ora.