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

Tin*_*Tin 147 c# datetime

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

Dan*_*haw 210

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

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);
Run Code Online (Sandbox Code Playgroud)

执行时打印"30",因为日期/时间之间有30分钟的差异.

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

  • 要显示差异,请执行以下操作:`Console.WriteLine((a - b).ToString(@"hh \:mm \:ss"))`.请参阅:[MSDN自定义TimeSpan格式](http://msdn.microsoft.com/en-us/library/ee372287(v = vs.100).aspx) (5认同)

Chr*_*isF 58

你想要TimeSpan结构:

TimeSpan diff = dateTime1 - dateTime2;
Run Code Online (Sandbox Code Playgroud)

TimeSpan对象表示一个时间间隔(持续时间或经过的时间),测量为天数,小时数,分钟数,秒数和分数秒数.TimeSpan结构也可用于表示一天中的时间,但仅限于时间与特定日期无关.

有多种方法可以从此结构中获取天,小时,分钟,秒和毫秒.

如果您只是对这种差异感兴趣,那么:

TimeSpan diff = Math.Abs(dateTime1 - dateTime2);
Run Code Online (Sandbox Code Playgroud)

无论订单如何,都会给你时间的正面差异.

如果您刚刚获得时间组件但时间可以在午夜之前分割,那么您需要在跨度上添加24小时以获得实际差异:

TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
    diff = diff + TimeSpan.FromDays(1);
}
Run Code Online (Sandbox Code Playgroud)


Nat*_*ate 28

你需要的是使用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));
Run Code Online (Sandbox Code Playgroud)


小智 10

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

这是一个例子:

DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;
Run Code Online (Sandbox Code Playgroud)


Ian*_*cer 5

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

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