如何获得使用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);