如何使用C#获取两个DateTime对象之间的时差?

时间:2010-05-12 17:03:47

标签: c# datetime

如何使用C#获取两个DateTime对象之间的时差?

9 个答案:

答案 0 :(得分:189)

以下示例演示了如何执行此操作:

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 Object,它提供了其他有用的属性。

答案 1 :(得分:55)

你想要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);
}

答案 2 :(得分:26)

您需要的是使用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));

答案 3 :(得分:10)

我通常这样做的方法是减去两个DateTime,这会给我一个TimeSpan来告诉我差异。

以下是一个例子:

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

答案 4 :(得分:4)

如果它们都是UTC日期时间值,您可以TimeSpan diff = dateTime1 - dateTime2;

否则,在每种可能情况下获得正确答案的机会均为零。

答案 5 :(得分:3)

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

答案 6 :(得分:2)

您需要使用TimeSpan。以下是一些示例代码:

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

答案 7 :(得分:2)

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

答案 8 :(得分:1)

您可以使用以下方式实现两个Datetime对象之间的区别。假设有DateTime对象dt1和dt2,那么代码。

TimeSpan diff = dt2.Subtract(dt1);