Как получить разницу во времени между двумя объектами 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);