Ответы:
Следующий пример демонстрирует, как это сделать:
DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);
При выполнении выдает «30», поскольку разница между датой и временем составляет 30 минут.
Результатом DateTime.Subtract(DateTime x)
является объект TimeSpan, который дает другие полезные свойства.
TotalMinutes
! (нет Minutes
)
Вы хотите TimeSpan
структуру:
TimeSpan diff = dateTime1 - dateTime2;
Объект TimeSpan представляет временной интервал (продолжительность или прошедшее время), который измеряется как положительное или отрицательное число дней, часов, минут, секунд и долей секунды. Структура TimeSpan также может использоваться для представления времени суток, но только в том случае, если время не связано с конкретной датой.
Существуют различные способы возврата дней, часов, минут, секунд и миллисекунд из этой структуры.
Если вы просто заинтересованы в разнице, то:
TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
даст вам положительную разницу между временами независимо от порядка.
Если вы только что получили компонент времени, но время может быть разделено на полночь, вам нужно добавить 24 часа к интервалу, чтобы получить реальную разницу:
TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
diff = diff + TimeSpan.FromDays(1);
}
var startDate = new DateTime(2007, 3, 24);
var endDate = new DateTime(2009, 6, 26);
var dateDiff = endDate.Subtract(startDate);
var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365,
(int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);
Console.WriteLine(date);
private void button1_Click(object sender, EventArgs e)
{
TimeSpan timespan;
timespan = dateTimePicker2.Value - dateTimePicker1.Value;
int timeDifference = timespan.Days;
MessageBox.Show(timeDifference.ToString());
}
Вы можете использовать следующий способ для достижения разницы между двумя объектами Datetime. Предположим, что существуют объекты DateTime dt1 и dt2, а затем код.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss"))
. См .: MSDN Custom TimeSpan Format