Мне нужна функция, которая может вернуть разницу между двумя датами ниже как 24.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Ответы:
Вы можете сделать следующее:
TimeSpan duration = b - a;
В классе timespan есть множество встроенных методов, чтобы делать то, что вам нужно, т.е.
duration.TotalSeconds
duration.TotalMinutes
Более подробную информацию можно найти здесь .
Попробуйте следующее
double hours = (b-a).TotalHours;
Если вам просто нужна разница в часах, исключая разницу в днях, вы можете использовать следующие
int hours = (b-a).Hours;
Разница между этими двумя свойствами в основном видна, когда разница во времени составляет более 1 дня. Свойство Hours будет сообщать только фактическую разницу в часах между двумя датами. Таким образом, если две даты отличаются на 100 лет, но произошли в одно и то же время дня, часы вернут 0. Но TotalHours вернет разницу между общим количеством часов, которые произошли между двумя датами (876 000 часов в данном случае).
Другое отличие состоит в том, что TotalHours возвращает дробные часы. Это может быть то, что вы хотите, а может и не быть. Если нет, Math.Round может настроить его по своему вкусу.
Возможно, вы ищете:
int Difference = (a-b).Hours;
При использовании этого метода будет показана разница во времени ч / б по времени.
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();
}
}
используйте свой идентификатор поля
var t1 фиксирует значение 4:00 AM
проверьте, этот код может быть кому-то полезен.