C#中的TimeSpan结构可以获取两个时间的时间差。
它主要具有以下属性和方法:
属性:
Days
:获取时间间隔的天数部分。Hours
:获取时间间隔的小时数部分(不包括整天的小时数)。Minutes
:获取时间间隔的分钟数部分(不包括整小时的分钟数)。Seconds
:获取时间间隔的秒数部分(不包括整分钟的秒数)。Milliseconds
:获取时间间隔的毫秒数部分(不包括整秒的毫秒数)。Ticks
:获取时间间隔的刻度数,每刻度等于一百纳秒。TotalDays
:获取时间间隔的总天数,包括天数、小时、分钟、秒和毫秒。TotalHours
:获取时间间隔的总小时数,包括小时、分钟、秒和毫秒。TotalMinutes
:获取时间间隔的总分钟数,包括分钟、秒和毫秒。TotalSeconds
:获取时间间隔的总秒数,包括秒和毫秒。
方法:
Add(TimeSpan)
:将指定的时间间隔添加到当前时间间隔。Subtract(TimeSpan)
:从当前时间间隔减去指定的时间间隔。Duration()
:获取时间间隔的绝对值。Negate()
:将时间间隔的值更改为相反数。ToString()
:将时间间隔转换为字符串表示形式。
例:
TimeSpan timeSpan = new TimeSpan(1, 2, 30, 45, 500); // 1天、2小时、30分钟、45秒、500毫秒Console.WriteLine("Days: " + timeSpan.Days); // 输出:1
Console.WriteLine("Hours: " + timeSpan.Hours); // 输出:2
Console.WriteLine("Minutes: " + timeSpan.Minutes); // 输出:30
Console.WriteLine("Seconds: " + timeSpan.Seconds); // 输出:45
Console.WriteLine("Milliseconds: " + timeSpan.Milliseconds); // 输出:500
Console.WriteLine("Ticks: " + timeSpan.Ticks); // 输出:978455000000Console.WriteLine("TotalDays: " + timeSpan.TotalDays); // 输出:1.10434027777778
Console.WriteLine("TotalHours: " + timeSpan.TotalHours); // 输出:26.5041666666667
Console.WriteLine("TotalMinutes: " + timeSpan.TotalMinutes); // 输出:1590.25
Console.WriteLine("TotalSeconds: " + timeSpan.TotalSeconds); // 输出:95415.5TimeSpan negatedTimeSpan = timeSpan.Negate();
Console.WriteLine("Negated TimeSpan: " + negatedTimeSpan); // 输出:-1.02:29:14.5000000TimeSpan absoluteTimeSpan = timeSpan.Duration();
Console.WriteLine("Absolute TimeSpan: " + absoluteTimeSpan); // 输出:1.02:30:45.5000000TimeSpan addedTimeSpan = timeSpan.Add(new TimeSpan(0, 1, 15, 0, 0));
Console.WriteLine("Added TimeSpan: " + addedTimeSpan); // 输出:1.03:45:45.5000000TimeSpan subtractedTimeSpan = timeSpan.Subtract(new TimeSpan(0, 0, 30, 15, 0));
Console.WriteLine("Subtracted TimeSpan: " + subtractedTimeSpan); // 输出:1.02:00:30.5000000string timeSpanString = timeSpan.ToString();
Console.WriteLine("TimeSpan as string: " + timeSpanString); // 输出:1.02:30:45.5000000
特别要理解Days、Hours、Minutes和Seconds和TotalHours、TotalMinutes和TotalSeconds等之间的差别。前者仅表示时间间隔的部分值(不包括更大的单位),而后者表示时间间隔的总值(包括更大的单位)。具体可以仔细看上面的例子加以分析。
假如我们要计算两个时间点的时间差,可以参考如下例子:
DateTime startTime = new DateTime(2023, 1, 1, 12, 0, 0); // 开始时间
DateTime endTime = new DateTime(2023, 1, 2, 14, 30, 0); // 结束时间TimeSpan timeDifference = endTime - startTime;int days = timeDifference.Days; // 相差的天数
int hours = timeDifference.Hours; // 相差的小时数
int minutes = timeDifference.Minutes; // 相差的分钟数
int seconds = timeDifference.Seconds; // 相差的秒数Console.WriteLine("相差的天数: " + days);
Console.WriteLine("相差的小时数: " + hours);
Console.WriteLine("相差的分钟数: " + minutes);
Console.WriteLine("相差的秒数: " + seconds);