Відповіді:
Наступний приклад демонструє, як це зробити:
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 dt1 і dt2, а потім код.
TimeSpan diff = dt2.Subtract(dt1);
Console.WriteLine((a - b).ToString(@"hh\:mm\:ss")). Дивіться: MSDN Custom TimeSpan Format