Diferença entre dois DateTimes C #?
Pergunta
Eu preciso de uma função que pode retornar a diferença entre o abaixo duas datas como 24.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Solução
Você pode fazer o seguinte:
TimeSpan duration = b - a;
Há muita construído em métodos na classe timespan para fazer o que você precisa, ou seja.
duration.TotalSeconds
duration.TotalMinutes
Mais informação pode ser encontrada aqui .
Outras dicas
Tente o seguinte
double hours = (b-a).TotalHours;
Se você quiser apenas a diferença hora excluindo a diferença em dias você pode usar o seguinte
int hours = (b-a).Hours;
A diferença entre estas duas propriedades é visto principalmente quando a diferença de tempo é mais do que 1 dia. A propriedade Horas só irá relatar a diferença real hora entre as duas datas. Portanto, se duas datas diferem por 100 anos, mas ocorreu ao mesmo tempo no dia, horas voltaria 0. Mas totalhours voltará a diferença entre, no valor total de horas que ocorreu entre as duas datas (876.000 horas, neste caso).
A outra diferença é que totalhours retornará horas fracionários. Isto pode ou não ser o que quiser. Se não, Math.Round pode ajustá-lo ao seu gosto.
Você talvez procurando:
int Difference = (a-b).Hours;
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours
O tempo de diferença b / w de tempo será mostrado utilização deste 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();
}
}
usar do seu campo id
var t1 capturas de um valor de 04h00
verificar este código pode ser útil para alguém.