¿Diferencia entre dos DateTimes C #?
Pregunta
Necesito una función que pueda devolver la diferencia entre las dos fechas siguientes como 24.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Solución
Puede hacer lo siguiente:
TimeSpan duration = b - a;
Hay muchos métodos integrados en la clase de intervalo de tiempo para hacer lo que necesita, es decir,
duration.TotalSeconds
duration.TotalMinutes
Se puede encontrar más información aquí .
Otros consejos
Pruebe lo siguiente
double hours = (b-a).TotalHours;
Si solo desea la diferencia horaria excluyendo la diferencia en días, puede usar lo siguiente
int hours = (b-a).Hours;
La diferencia entre estas dos propiedades se ve principalmente cuando la diferencia horaria es más de 1 día. La propiedad Horas solo informará la diferencia horaria real entre las dos fechas. Entonces, si dos fechas diferían en 100 años pero ocurrían a la misma hora en el día, las horas devolverían 0. Pero TotalHours devolverá la diferencia entre la cantidad total de horas que ocurrieron entre las dos fechas (876,000 horas en este caso).
La otra diferencia es que TotalHours devolverá horas fraccionarias. Esto puede o no ser lo que quieres. Si no, Math.Round puede ajustarlo a su gusto.
¿Quizás estás buscando:
int Difference = (a-b).Hours;
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours
La diferencia horaria b / w respecto al tiempo se mostrará utilizando este método.
private void HoursCalculator()
{
var t1 = txtfromtime.Text.Trim();
var t2 = txttotime.Text.Trim();
var Fromtime = t1.Substring(6);
var Totime = t2.Substring(6);
if (Fromtime == "M")
{
Fromtime = t1.Substring(5);
}
if (Totime == "M")
{
Totime = t2.Substring(5);
}
if (Fromtime=="PM" && Totime=="AM" )
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
var t = dt1.Subtract(dt2);
//int temp = Convert.ToInt32(t.Hours);
//temp = temp / 2;
lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else if (Fromtime == "AM" && Totime == "PM")
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
}
usa tu ID de campo
var t1 captura un valor de 4:00AM
compruebe que este código puede ser útil para alguien.