本文告诉大家简单的方法进行时间计算。
实际上使用 TimeSpan 可以做到让代码比较好懂,而代码很简单。
例如我使用下面的代码表示 5 秒
1
|
const int needCount = 5 * 1000; |
因为后面使用的是延迟,延迟的代码很简单
1
|
Task.Delay(needCount) |
这时传入的是一个毫秒,但是很多小伙伴问,为什么是 5*1000 表示 5秒,他不知道我使用的是毫秒。
所以建议使用 TimeSpan 来写时间,下面的需求是在判断在开机 20 秒内的延迟,如果在开机 20 秒内启动应用,那么就需要延迟时间
1
|
var needTime = TimeSpan.FromSeconds(20); //开机20秒左右 USB 已经加载完成 |
计算时间的减法或加法可以使用重载+和-,请看下面代码,就是把两个 TimeSpan 相减,返回的值也是一个 TimeSpan ,下面的代码是编译不通过的。
1
2
|
var chikesereHearpawwirboo = needTime - maxDelay; Console.WriteLine(chikesereHearpawwirboo); |
如果需要从毫秒转 TimeSpan ,请看下面代码
1
2
3
4
5
6
|
// 毫秒转 TimeSpan var milliseconds = 5 * 1000; var time = TimeSpan.FromMilliseconds(milliseconds); // TimeSpan 转 毫秒 milliseconds =( int ) time.TotalMilliseconds; |
因为从秒转毫秒的值是 double 需要进行转换,如果使用 int 转换有时会越界,建议使用下面代码
1
2
3
4
5
6
|
// 毫秒转 TimeSpan long milliseconds = 5 * 1000; var time = TimeSpan.FromMilliseconds(milliseconds); // TimeSpan 转 毫秒 milliseconds = ( long ) Math.Ceiling(time.TotalMilliseconds); |
这个计算适合在有天数和小时等的计算,如计算 1天 减去 3h10m 有多少毫秒,如果不使用 TimeSpan 自己重写,还是需要写很多代码
1
2
3
|
var time = TimeSpan.FromDays(1); var cut = new TimeSpan(0, 3, 10, 0); var milliseconds = ( long )(time - cut).TotalMilliseconds; |
尝试不使用 TimeSpan 想想需要怎么写
C#使用timespan和timer完成一个简单的倒计时器
首先利用timespan数据类型这样构造:
1
2
|
TimeSpan ts = new TimeSpan(0, 45, 0); |
这样就声明了一个长度为45分钟的时间段,其中构造函数参数的含义:
1
|
TimeSpan(hour,minute,second); |
然后拖进去一个timer,叫timer1
1
|
timer1.Interval=1000; |
设置一秒一个周期
在timer的tick事件里面这样写:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
private void timer1_Tick( object sender, EventArgs e) { String str = ts.Hours.ToString() + ":" + ts.Minutes.ToString() + ":" + ts.Seconds.ToString(); label17.Text = str; //label17用来显示剩余的时间 ts = ts.Subtract( new TimeSpan(0, 0, 1)); //每隔一秒减去一秒 if (ts.TotalSeconds < 0.0) //当倒计时完毕 { timer1.Enabled = false ; MessageBox.Show( "考试时间到,系统将强行交卷" ); //提示时间到,下面可以加你想要的操作 } } |
一个简单的倒计时器就这样完成了,嘿嘿,不看不知道,一看很简单呀
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:https://lindexi.gitee.io/lindexi/post/C-TimeSpan-时间计算.html