C# TimeSpan的用法(附带实例)
DateTime 类的使用非常有弹性,可以使用下列构建方法创建时间对象:
public TimeSpan(long ticks); public TimeSpan(int hours, int minutes, int seconds); public TimeSpan(int days, int hours, int minutes, int seconds); public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds);
C# TimeSpan的属性
TimeSpan 的属性如下:- Days:天数;
- Hours:小时数;
- Minutes:分钟数;
- Seconds:秒数;
- MilliMinutes:毫秒数;
- Ticks:1000000 Tick 等于 1 秒,刻度(Tick)数目;
- TotalDays:显示完整的天数,也会显示小时、分钟、秒、毫秒;
- TotalHours:显示完整小时数,也会显示分钟、秒、毫秒;
- TotalMinutes:显示完整分钟数,也会显示秒、毫秒;
- TotalSeconds:显示完整秒数,也会显示毫秒;
- TotalMilliseconds:显示完整毫秒数。
【实例 1】创建 TimeSpan 对象同时输出 TotalDays 和相关属性。
TimeSpan interval = new TimeSpan(5, 10, 40, 35, 350);
Console.WriteLine($"TimeSpan interval : {interval}");
Console.WriteLine($"TotalDays : {interval.TotalDays}");
Console.WriteLine($"Days : {interval.Days,-3}");
Console.WriteLine($"Hours : {interval.Hours,-3}");
Console.WriteLine($"Minutes : {interval.Minutes,-3}");
Console.WriteLine($"Seconds : {interval.Seconds,-3}");
Console.WriteLine($"Milliseconds : {interval.Milliseconds,-3}");
执行结果为:
TimeSpan interval : 5.10:40:35.3500000
TotalDays : 5.44485358796296
Days : 5
Hours : 10
Minutes : 40
Seconds : 35
Milliseconds : 350
【实例 2】创建 TimeSpan 对象同时输出 TotalHours 和相关属性。
TimeSpan interval = new TimeSpan(1, 10, 40, 35, 350);
Console.WriteLine($"TimeSpan interval : {interval}");
Console.WriteLine($"TotalHours : {interval.TotalHours}");
Console.WriteLine($"Hours : {interval.Hours,-3}");
Console.WriteLine($"Minutes : {interval.Minutes,-3}");
Console.WriteLine($"Seconds : {interval.Seconds,-3}");
Console.WriteLine($"Milliseconds : {interval.Milliseconds,-3}");
执行结果为:
TimeSpan interval : 1.10:40:35.3500000
TotalHours : 34.6764861111111
Hours : 10
Minutes : 40
Seconds : 35
Milliseconds : 350
【实例 3】创建 TimeSpan 对象同时输出 TotalMinutes 和相关属性。
TimeSpan interval = new TimeSpan(1, 10, 40, 35, 350);
Console.WriteLine($"TimeSpan interval : {interval}");
Console.WriteLine($"TotalMinutes : {interval.TotalMinutes}");
Console.WriteLine($"Minutes : {interval.Minutes,-3}");
Console.WriteLine($"Seconds : {interval.Seconds,-3}");
Console.WriteLine($"Milliseconds : {interval.Milliseconds,-3}");
执行结果为:
TimeSpan interval : 1.10:40:35.3500000
TotalMinutes : 2080.58916666667
Minutes : 40
Seconds : 35
Milliseconds : 350
【实例 4】创建 TimeSpan 对象同时输出 TotalSeconds 和相关属性。
TimeSpan interval = new TimeSpan(1, 10, 40, 35, 350);
Console.WriteLine($"TimeSpan interval : {interval}");
Console.WriteLine($"TotalSeconds : {interval.TotalSeconds}");
Console.WriteLine($"Seconds : {interval.Seconds,-3}");
Console.WriteLine($"Milliseconds : {interval.Milliseconds,-3}");
执行结果为:
TimeSpan interval : 1.10:40:35.3500000
TotalSeconds : 124835.35
Seconds : 35
Milliseconds : 350
C# TimeSpan类常用方法
TimeSpan 类常用的方法如下:- Add(): 加法,回传新的 TimeSpan。
- Subtract(): 减法,回传新的 TimeSpan。
- Parse() 和 TryParse(): 解析时间间隔字符串,将其转为相等的 TimeSpan 字符串。TryParse() 也解析日期与时间字符串,将其转为 TimeSpan 格式,但是还会回传布尔值 bool,如果成功转换则回传 true,如果失败则回传 false。
1) 时间间隔加法Add()
时间间隔加法 Add() 的语法如下:public TimeSpan Add(TimeSpan ts);
【实例 5】时间间隔加法的应用。
TimeSpan ts1 = new TimeSpan(10, 20, 30);
var ts2 = new TimeSpan(2, 5, 40);
Console.WriteLine($"{ts1.Add(ts2)}");
执行结果为:
12:26:10
2) 时间间隔减法Subtract()
时间间隔减法 Subtract() 的语法如下:public TimeSpan Subtract(TimeSpan ts);
【实例 6】时间间隔减法的应用。
TimeSpan ts1 = new TimeSpan(10, 20, 30);
var ts2 = new TimeSpan(2, 30, 40);
Console.WriteLine($"{ts1.Subtract(ts2)}");
执行结果为:
07:49:50
3) 解析字符串为时间间隔Parse()和TryParse()
常用的 Parse() 方法语法如下:public static TimeSpan Parse(string s);上述 s 是要解析的日期或时间字符串,其可以是下列格式:
[ws][-]{d.}hh.mm[:ss[.ff]][ws]
- ws: 这是选项,表示空白;
- -: 这是选项,表示负号;
- d: 天数,范围是 0~10675799;
- : 文化特性,分隔天数与小时;
- hh: 小时,范围是 0~23;
- : 文化特性,时间分隔符;
- mm: 分钟,范围是 0~59;
- ss: 秒,范围是从 0~59;
- ff: 文化特性,区分秒数与小数点秒数。
TryParse() 与 Parse() 功能相同,但是有回传值,如果转换成功则回传 true,如果转换失败则回传 false,此方法的语法如下:
bool TimeSpan.TryParse(str, TimeSpan ts);
【实例 7】解析字符串成为 TimeSpan 的时间格式。
using System.Globalization;
string[] values = { "5", "5:22", "5:22:14", "5:22:14:45",
"5.22:14:45", "5:22:14:45.3448", "5:10:14:45" };
foreach (string value in values)
{
TimeSpan ts = TimeSpan.Parse(value);
Console.WriteLine($"{value,18} : {ts.ToString()}");
}
执行结果为:
5 : 5.00:00:00
5:22 : 05:22:00
5:22:14 : 05:22:14
5:22:14:45 : 5.22:14:45
5.22:14:45 : 5.22:14:45
5:22:14:45.3448 : 5.22:14:45.3448000
5:10:14:45 : 5.10:14:45
【实例 8】使用 TryParse() 方法替换 Parse() 方法,重新设计实例 7,同时增加非时间间隔的字符串。
using System.Globalization;
string[] values = { "5", "5:22", "5:22:14", "5:22:14:45", "test2.22:14:45",
"5.22:14:45", "5:22:14:45.3448", "5:10:14:45" };
TimeSpan ts;
foreach (string value in values)
{
if (TimeSpan.TryParse(value, out ts))
Console.WriteLine($"{value,18} : {ts.ToString()}");
else
Console.WriteLine($"{value,18} : 转换失败");
}
执行结果为:
5 : 5.00:00:00
5:22 : 05:22:00
5:22:14 : 05:22:14
5:22:14:45 : 5.22:14:45
test2.22:14:45 : 转换失败
5.22:14:45 : 5.22:14:45
5:22:14:45.3448 : 5.22:14:45.3448000
5:10:14:45 : 5.10:14:45
如果使用 Parse() 转换失败,程序会异常终止,所以一般比较常使用 TryParse(),因为 TryParse() 可以避免程序异常终止。DateTime和TimeSpan的混合应用
DateTime Add() 和 Subtract() 方法的语法如下:public DateTime Add(TimeSpan value); public DateTime Subtract(TimeSpan value);
【实例 9】计算未来日期与时间。
DateTime currentTime = DateTime.Now;
Console.WriteLine($"现在时间:{currentTime}");
TimeSpan duration = new System.TimeSpan(3, 0, 0, 0);
Console.WriteLine($"3 天后时间:{currentTime.Add(duration)}");
duration = new System.TimeSpan(3, 10, 5, 5);
Console.WriteLine($"3 天 10 小时 5 分钟后时间:{currentTime.Add(duration)}");
执行结果为:
现在时间:5/9/2025 3:49:51 AM
3 天后时间:5/12/2025 3:49:51 AM
3 天 10 小时 5 分钟后时间:5/12/2025 1:54:56 PM
【实例 10】计算过去日期与时间。
DateTime currentTime = DateTime.Now;
Console.WriteLine($"现在时间:{currentTime}");
TimeSpan before = new System.TimeSpan(3, 10, 5, 0);
Console.WriteLine($"3 天前时间:{currentTime.Subtract(before)}");
执行结果为:
现在时间:5/9/2025 3:50:40 AM
3 天前时间:5/5/2025 5:45:40 PM
ICP备案:
公安联网备案: