DateTime.AddHours(Double) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna um novo DateTime que adiciona o número especificado de horas ao valor dessa instância.
public:
DateTime AddHours(double value);
public DateTime AddHours (double value);
member this.AddHours : double -> DateTime
Public Function AddHours (value As Double) As DateTime
Parâmetros
- value
- Double
Um número de horas inteiras e fracionárias. O parâmetro value
pode ser positivo ou negativo.
Retornos
Um objeto cujo valor é a soma da data e hora representada por essa instância e o número de horas representado por value
.
Exceções
O resultado DateTime é menor que DateTime.MinValue ou maior que DateTime.MaxValue.
Exemplos
O exemplo a seguir usa o AddHours método para adicionar vários valores inteiros e fracionários a uma data e hora. Ele também ilustra a perda de precisão causada pela passagem do método de um valor que inclui um componente fracionário.
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
Comentários
Este método não altera o valor desse DateTime. Em vez disso, ele retorna um novo DateTime cujo valor é o resultado dessa operação. A Kind propriedade do objeto retornado DateTime é a mesma de value
.
A parte fracionária de value
é a parte fracionária de uma hora. Por exemplo, 4,5 é equivalente a 4 horas, 30 minutos, 0 segundos, 0 milissegundos e 0 tiques.
No .NET 6 e em versões anteriores, o value
parâmetro é arredondado para o milissegundo mais próximo. No .NET 7 e versões posteriores, a precisão completa Double do value
parâmetro é usada. No entanto, devido à imprecisão inerente da matemática de ponto flutuante, a precisão resultante variará.
A conversão de intervalos de tempo de menos de uma hora em uma fração pode envolver uma perda de precisão se o resultado for um decimal de repetição não terminante. (Por exemplo, um minuto é 0,016667 de uma hora.) Se isso for problemático, você poderá usar o Add método , que permite especificar mais de um tipo de intervalo de tempo em uma única chamada de método e eliminará a necessidade de converter intervalos de tempo em partes fracionárias de uma hora.