мне нужна функция, которая может вернуть разницу между двумя датами ниже, как 24Разница между двумя DateTimes C#?
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
мне нужна функция, которая может вернуть разницу между двумя датами ниже, как 24Разница между двумя DateTimes C#?
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
Дополнительная информация может быть найдена here.
Попробуйте следующее
double hours = (b-a).TotalHours;
Если вы просто хотите, разница час за исключением разницы в днях вы можете используйте следующее:
int hours = (b-a).Hours;
Разница между этими двумя свойствами в основном проявляется, когда разница во времени составляет более 1 день. Свойство Hours будет сообщать только фактическую часовую разницу между двумя датами. Таким образом, если две даты отличались на 100 лет, но произошли в то же время в течение дня, часы вернутся 0. Но TotalHours вернет разницу между общим количеством часов, которое произошло между двумя датами (в этом случае 876 000 часов).
Другое отличие состоит в том, что TotalHours вернет дробные часы. Это может быть или не быть тем, что вы хотите. Если нет, Math.Round может настроить его по своему вкусу.
Все еще неправильно. TotalHours - это двойной, возвращающий целые и дробные часы. –
@Vilx, не обязательно неправильно. Цель OP неоднозначна – JaredPar
Правильный ответ на вопрос, он хочет, чтобы результат был таким, каким он будет. Конечно, он мог легко обойти TotalHours, если этого хочет. –
Вы, возможно, ищете:
int Difference = (a-b).Hours;
Это дает мне ответ 1? – abmv
На самом деле должно быть int Разница = (a-b). Всего часов; –
int hours = (int)Math.Round((b - a).TotalHours)
var theDiff24 = (b-a).Hours
TimeSpan X = b - a;
X.totalhours
можно использовать с большим больше свойств TimeSpan
.
Временной разброс ч/б во времени будет показан с использованием этого метода.
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();
}
}
использовать
вар t1 вашего идентификатора поля в фиксирует значение 4:00 утра
проверки этот код может быть полезным для кого-то.
TimeSpan span = x.ShiftEndTime.Subtract (x.ShiftStartTime) if (span.TotalHours == 24) {do ...} – abmv