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

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

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

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

当执行时,由于date/时间之间有30分钟的差异,所以打印“30”。

DateTime.Subtract(DateTime x)的结果是一个TimeSpan对象 ,它提供了其他有用的属性。

你想要TimeSpan结构:

 TimeSpan diff = dateTime1 - dateTime2; 

TimeSpan对象表示一个时间间隔(持续时间或经过时间),测量时间为正数或负数天,小时,分钟,秒和小数秒。 TimeSpan结构也可以用来表示一天中的时间,但是只有当时间与特定date无关时。

从这个结构中获取天,小时,分,秒和毫秒有多种方法。

如果你只是有兴趣的差异,然后:

 TimeSpan diff = Math.Abs(dateTime1 - dateTime2); 

不pipe顺序如何,都会给你时代之间的积极差距。

如果您刚刚获得时间组件,但时间可以在午夜之前拆分,则需要将24小时添加到跨度以获得实际的差异:

 TimeSpan diff = dateTime1 - dateTime2; if (diff < 0) { diff = diff + TimeSpan.FromDays(1); } 

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

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

这是一个例子:

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

如果他们都是UTCdate时间值,你可以做TimeSpan diff = dateTime1 - dateTime2;

否则,在每一个可能的情况下得到正确答案的机会是零。

你需要使用TimeSpan 。 这是一些示例代码:

 TimeSpan sincelast = TimeSpan.FromTicks(DateTime.Now.Ticks - LastUpdate.Ticks); 
 private void button1_Click(object sender, EventArgs e) { TimeSpan timespan; timespan = dateTimePicker2.Value - dateTimePicker1.Value; int timeDifference = timespan.Days; MessageBox.Show(timeDifference.ToString()); } 
  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); 

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

 TimeSpan diff = dt2.Subtract(dt1);