C# TimeSpan
最后修改于 2023 年 7 月 5 日
在本文中,我们将使用 C# 中的 TimeSpan。
TimeSpan 表示一个时间间隔(时间长度或经过的时间),它以天、小时、分钟、秒和秒的小数部分的有符号数字来衡量。
TimeSpan 对象的值范围可以从 TimeSpan.MinValue 到 TimeSpan.MaxValue。 TimeSpan 测量的最大时间单位是天。它不能用年或月来表示,因为这些单位的时间长度是可变的。例如,一个月可以有 28、29、30 或 31 天。
| 构造函数 | 描述 |
|---|---|
| TimeSpan(Int64) | 初始化为指定的刻度数 |
| TimeSpan(Int32, Int32, Int32) | 初始化为指定的小时数、分钟数和秒数 |
| TimeSpan(Int32, Int32, Int32, Int32) | 初始化为指定的天数、小时数、分钟数和秒数 |
| TimeSpan(Int32, Int32, Int32, Int32, Int32) | 初始化为指定的天数、小时数、分钟数、秒数和毫秒数 |
| TimeSpan(Int32, Int32, Int32, Int32, Int32, Int32) | 初始化为指定的天数、小时数、分钟数、秒数、毫秒数和微秒数 |
C# TimeSpan 简单示例
以下是一个使用 TimeSpan 的简单示例。
TimeSpan ts1 = new TimeSpan(2, 4, 5); Console.WriteLine(ts1); TimeSpan ts2 = new TimeSpan(2, 4, 5, 9); Console.WriteLine(ts2); Console.WriteLine(TimeSpan.TicksPerDay); Console.WriteLine(TimeSpan.TicksPerHour); Console.WriteLine(TimeSpan.TicksPerMinute); Console.WriteLine(TimeSpan.MinValue); Console.WriteLine(TimeSpan.MaxValue);
在该程序中,我们创建了两个 TimeSpan 结构实例,打印每天、每小时和每分钟的刻度数,并打印 TimeSpan 的最小值和最大值。
$ dotnet run 02:04:05 2.04:05:09 864000000000 36000000000 600000000 -10675199.02:48:05.4775808 10675199.02:48:05.4775807
C# TimeSpan 基本算术运算
我们可以在 TimeSpan 对象上使用一些基本的算术运算。
TimeSpan ts = new TimeSpan(2, 4, 5, 5); Console.WriteLine(ts); TimeSpan ts2 = new TimeSpan(4, 1, 0, 0); Console.WriteLine(ts2); var res = ts + ts2; Console.WriteLine(res); var res2 = ts * 2; Console.WriteLine(res2); var res3 = ts2 - ts; Console.WriteLine(res3);
在该程序中,我们添加、乘和减去 TimeSpan 结构。
$ dotnet run 2.04:05:05 4.01:00:00 6.05:05:05 4.08:10:10 1.20:54:55
在下一个示例中,我们将 TimeSpan 与 DateTime 一起使用。
var now = DateTime.Now; var ts = new TimeSpan(2, 4, 5); var res = now.Add(ts); var res2 = now.Subtract(ts); Console.WriteLine(now); Console.WriteLine(res); Console.WriteLine(res2);
在该程序中,我们获取当前日期时间。我们添加和减去一个 TimeSpan 值。
$ dotnet run 10/12/2022 8:23:57 PM 10/12/2022 10:28:02 PM 10/12/2022 6:19:52 PM
C# TimeSpan From 方法
TimeSpan 具有方便的方法,可以从单个值创建实例。
var ts1 = TimeSpan.FromDays(2.7); Console.WriteLine(ts1); var ts2 = TimeSpan.FromHours(4.5); Console.WriteLine(ts2); var ts3 = TimeSpan.Minutes(12.5); Console.WriteLine(ts3); var res = ts1 + ts2 + ts3; Console.WriteLine(res);
该程序使用 TimeSpan.FromDays、TimeSpan.FromHours 和 TimeSpan.FromMinutes。
$ dotnet run 2.16:48:00 04:30:00 00:12:30 2.21:30:30
博罗季诺战役
在以下示例中,我们减去两个日期值。
DateTime now = DateTime.Today;
DateTime borodino_battle = new DateTime(1812, 9, 7);
TimeSpan diff = now - borodino_battle;
Console.WriteLine($"{diff.TotalDays} days have passed since the Battle of Borodino.");
在该示例中,我们计算自博罗季诺战役以来经过的天数。
DateTime now = DateTime.Today; DateTime borodino_battle = new DateTime(1812, 9, 7);
我们定义了两个 DateTime 对象:一个用于今天,一个用于博罗季诺战役的日期。
TimeSpan diff = now - borodino_battle;
通过减去这两个对象,我们得到一个 TimeSpan 对象。
Console.WriteLine($"{diff.TotalDays} days have passed since the Battle of Borodino.");
TotalDays 属性具有经过的时间的天数。
$ dotnet run 76736 days have passed since the Battle of Borodino.
截至 2022 年 10 月 12 日,自博罗季诺战役以来已经过去了 76736 天。
来源
在本文中,我们使用了 C# 中的 TimeSpan 结构。
作者
列出所有 C# 教程。