meses - Diferencia entre dos DateTimes C#?
sumar dias a un datetimepicker c# (6)
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);
¿Quizás estás buscando:
int Difference = (a-b).Hours;
La diferencia horaria b / w a la hora 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();
}
}
use su identificación de campo
var t1 captura un valor de 4:00 a.m.
compruebe que este código puede ser útil para alguien.
Pruebe lo siguiente
double hours = (b-a).TotalHours;
Si solo desea la diferencia de horas 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 de tiempo es más de 1 día. La propiedad Horas solo informará la diferencia horaria real entre las dos fechas. Entonces, si dos fechas difieren en 100 años pero ocurren a la misma hora del día, las horas regresarían a 0. Pero TotalHours devolverá la diferencia entre la cantidad total de horas que ocurrió 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. De lo contrario, Math.Round puede ajustarlo a su gusto.
Puedes hacer lo siguiente:
TimeSpan duration = b - a;
Hay muchos métodos integrados en la clase timespan para hacer lo que necesita, es decir,
duration.TotalSeconds
duration.TotalMinutes
Más información se puede encontrar here .
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours