Ответ 1
Вы можете сделать следующее:
TimeSpan duration = b - a;
В классе timespan есть много встроенных методов, чтобы сделать то, что вам нужно, т.е.
duration.TotalSeconds
duration.TotalMinutes
Более подробную информацию можно найти здесь.
Мне нужна функция, которая может вернуть разницу между двумя датами ниже 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;
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours
TimeSpan X = b - a;
X.totalhours
может использоваться с большим количеством свойств TimeSpan
.
Временной разброс b/w во времени будет показан с использованием этого метода.
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
проверить этот код может быть полезно кому-то.