Respostas:
O exemplo a seguir demonstra como fazer isso:
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
Quando executado, isso imprime "30", pois há uma diferença de 30 minutos entre a data / hora.
O resultado DateTime.Subtract(DateTime x)
é um objeto TimeSpan que fornece outras propriedades úteis.
TotalMinutes
! (not Minutes
) #
Você quer a TimeSpan
estrutura:
TimeSpan diff = dateTime1 - dateTime2;
Um objeto TimeSpan representa um intervalo de tempo (duração do tempo ou tempo decorrido) que é medido como um número positivo ou negativo de dias, horas, minutos, segundos e frações de segundo. A estrutura TimeSpan também pode ser usada para representar a hora do dia, mas apenas se a hora não estiver relacionada a uma data específica.
Existem vários métodos para recuperar dias, horas, minutos, segundos e milissegundos dessa estrutura.
Se você está interessado apenas na diferença, então:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
fornecerá a diferença positiva entre os horários, independentemente do pedido.
Se você acabou de obter o componente de horário, mas os horários podem ser divididos pela meia-noite, é necessário adicionar 24 horas ao intervalo para obter a diferença real:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
SE ambos são valores de data e hora UTC, você pode fazer TimeSpan diff = dateTime1 - dateTime2;
Caso contrário, sua chance de obter a resposta correta em todos os casos possíveis é zero.
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
private void button1_Click(object sender, EventArgs e)
{
TimeSpan timespan;
timespan = dateTimePicker2.Value - dateTimePicker1.Value;
int timeDifference = timespan.Days;
MessageBox.Show(timeDifference.ToString());
}
Você pode usar da seguinte maneira para obter a diferença entre dois Objetos do Datetime. Suponha que haja objetos DateTime dt1 e dt2 e o código.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
. Veja: Formato TimeSpan personalizado do MSDN