Как получить разницу во времени между двумя объектами DateTime с помощью С#?

Как получить разницу во времени между двумя объектами DateTime с помощью С#?

Ответ 1

В следующем примере показано, как это сделать:

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, который дает другие полезные свойства.

Ответ 2

Вы хотите TimeSpan struct:

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);
}

Ответ 3

Вам нужно использовать метод DateTime Subtract, который возвращает TimeSpan.

var dateOne = DateTime.Now;
var dateTwo = DateTime.Now.AddMinutes(-5);
var diff = dateTwo.Subtract(dateOne);
var res = String.Format("{0}:{1}:{2}", diff.Hours,diff.Minutes,diff.Seconds));

Ответ 4

Обычно я делаю это, вычитая два DateTime, и это дает мне TimeSpan, который скажет мне diff.

Вот пример:

DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;

Ответ 5

ЕСЛИ они оба значения времени по дате UTC, вы можете сделать TimeSpan diff = dateTime1 - dateTime2;

В противном случае ваш шанс получить правильный ответ в каждом возможном случае равен нулю.

Ответ 6

Вам нужно использовать TimeSpan. Вот пример кода:

TimeSpan sincelast = TimeSpan.FromTicks(DateTime.Now.Ticks - LastUpdate.Ticks);

Ответ 7

private void button1_Click(object sender, EventArgs e)
{
    TimeSpan timespan;
    timespan = dateTimePicker2.Value - dateTimePicker1.Value;
    int timeDifference = timespan.Days;
    MessageBox.Show(timeDifference.ToString());
}

Ответ 8

 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);

Ответ 9

Вы можете использовать следующий способ для достижения разницы между двумя объектами Datetime. Предположим, что есть объекты DateTime dt1 и dt2, затем код.

TimeSpan diff = dt2.Subtract(dt1);