C#使用TimeSpan时间计算的简单实现

所属分类: 软件编程 / C#教程 阅读数: 151
收藏 0 赞 0 分享

本文告诉大家简单的方法进行时间计算。

实际上使用 TimeSpan 可以做到让代码比较好懂,而代码很简单。

例如我使用下面的代码表示 5 秒

const int needCount = 5 * 1000;

因为后面使用的是延迟,延迟的代码很简单

Task.Delay(needCount)

这时传入的是一个毫秒,但是很多小伙伴问,为什么是 5*1000 表示 5秒,他不知道我使用的是毫秒。

所以建议使用 TimeSpan 来写时间,下面的需求是在判断在开机 20 秒内的延迟,如果在开机 20 秒内启动应用,那么就需要延迟时间

   var needTime = TimeSpan.FromSeconds(20); //开机20秒左右 USB 已经加载完成

计算时间的减法或加法可以使用重载+和-,请看下面代码,就是把两个 TimeSpan 相减,返回的值也是一个 TimeSpan ,下面的代码是编译不通过的。

   var chikesereHearpawwirboo = needTime - maxDelay;
   Console.WriteLine(chikesereHearpawwirboo);

如果需要从毫秒转 TimeSpan ,请看下面代码

   // 毫秒转 TimeSpan
   var milliseconds = 5 * 1000;
   var time = TimeSpan.FromMilliseconds(milliseconds);

   // TimeSpan 转 毫秒
   milliseconds =(int) time.TotalMilliseconds;

因为从秒转毫秒的值是 double 需要进行转换,如果使用 int 转换有时会越界,建议使用下面代码

   // 毫秒转 TimeSpan
   long milliseconds = 5 * 1000;
   var time = TimeSpan.FromMilliseconds(milliseconds);

   // TimeSpan 转 毫秒
   milliseconds = (long) Math.Ceiling(time.TotalMilliseconds);

这个计算适合在有天数和小时等的计算,如计算 1天 减去 3h10m 有多少毫秒,如果不使用 TimeSpan 自己重写,还是需要写很多代码

   var time = TimeSpan.FromDays(1);
   var cut = new TimeSpan(0, 3, 10, 0);
   var milliseconds = (long)(time - cut).TotalMilliseconds;

尝试不使用 TimeSpan 想想需要怎么写

C#使用timespan和timer完成一个简单的倒计时器

首先利用timespan数据类型这样构造:

TimeSpan ts = new
TimeSpan(0, 45, 0);

这样就声明了一个长度为45分钟的时间段,其中构造函数参数的含义:

TimeSpan(hour,minute,second);

然后拖进去一个timer,叫timer1

timer1.Interval=1000;

设置一秒一个周期

在timer的tick事件里面这样写:

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("考试时间到,系统将强行交卷");//提示时间到,下面可以加你想要的操作
      }
    }

一个简单的倒计时器就这样完成了,嘿嘿,不看不知道,一看很简单呀

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

C# 大小写转换(金额)实例代码

C# 大小写转换(金额)实例代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm中Panel实现用鼠标操作滚动条的实例方法

由于在WinForm中Panel不能直接响应鼠标的滚动事件,只好采用捕获窗体的滚动事件。
收藏 0 赞 0 分享

C#访问应用程序配置文件的方法

C#访问应用程序配置文件的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#读写文件的方法汇总

C#读写文件的方法汇总,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#计算代码执行时间的方法

在一些测试工作时我们需要获得高精度的代码执行时间以比较其效率。
收藏 0 赞 0 分享

C# 动画窗体(AnimateWindow)的小例子

C# 动画窗体(AnimateWindow)的小例子,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# zxing二维码写入的实例代码

C# zxing二维码写入的实例代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

c#判断输入的是不是数字的小例子

c#判断输入的是不是数字的小例子,需要的朋友可以参考一下
收藏 0 赞 0 分享

c# 深拷贝与浅拷贝的区别分析及实例

浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用. 深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.
收藏 0 赞 0 分享

C#利用com操作excel释放进程的解决方法

最近利用Microsoft.Office.Interop.Excel.Application读取一个excel后,进程中一直存在excel,在网上找了一阵子,其中有几个解决方案
收藏 0 赞 0 分享
查看更多