Respuestas:
El siguiente ejemplo muestra cómo hacer esto:
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);
Cuando se ejecuta esto imprime "30" ya que hay una diferencia de 30 minutos entre la fecha / hora.
El resultado de DateTime.Subtract(DateTime x)es un objeto TimeSpan que proporciona otras propiedades útiles.
TotalMinutes! (no Minutes)
Quieres la TimeSpanestructura:
TimeSpan diff = dateTime1 - dateTime2;
Un objeto TimeSpan representa un intervalo de tiempo (duración del tiempo o tiempo transcurrido) que se mide como un número positivo o negativo de días, horas, minutos, segundos y fracciones de segundo. La estructura TimeSpan también se puede usar para representar la hora del día, pero solo si la hora no está relacionada con una fecha en particular.
Existen varios métodos para recuperar los días, horas, minutos, segundos y milisegundos de esta estructura.
Si solo está interesado en la diferencia, entonces:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
le dará la diferencia positiva entre los tiempos independientemente del orden.
Si acaba de obtener el componente de tiempo, pero los tiempos se pueden dividir para la medianoche, debe agregar 24 horas al intervalo para obtener la diferencia real:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
SI ambos son valores UTC de fecha y hora que puede hacer TimeSpan diff = dateTime1 - dateTime2;
De lo contrario, su probabilidad de obtener la respuesta correcta en cada caso posible es cero.
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());
}
Puede usarlo de la siguiente manera para lograr la diferencia entre dos objetos Datetime. Supongamos que hay objetos DateTime dt1 y dt2 y luego el código.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss")). Ver: MSDN personalizada TimeSpan Formato