Timespan的使用(收集两位同仁的资料)

TimeSpan的用法

TimeSpan是用来表示一个时间段的实例,两个时间的差可以构成一个TimeSpan实例,现在就来简单介绍一下几点重要的用法:

a 先来介绍几个方法

TimeSpan.Minutes(其他时间比如天数,小时数,秒数都一样的情况下得到的分钟数的差),其他的Hours,Second一样

DateTime.Tick :是一个计时周期,表示一百纳秒,即一千万分之一秒,那么 Ticks 在这里表示总共相差多少个时间周期,即:9 * 24 * 3600 * 10000000 + 23 * 3600 * 10000000 + 59 * 60 * 10000000 + 59 * 10000000 = 8639990000000。3600 是一小时 的秒数

TimeSpan.TotalDays:两个时间段相差的日数,其他的TotalHours,TotalMinutes,TotalSeconds 一样

b 两个时间的差

string time1 = "2010-5-26 8:10:00";

string time2 = "2010-5-26 18:20:00";

DateTime t1 = Convert.ToDateTime(time1);

DateTime t2 = Convert.ToDateTime(time2);

TimeSpan ts1=t2-t1;

string tsMin=ts1.Minutes.ToString();

TimeSpan ts11=new TimeSpan(t1.Tick);

TimeSpan ts22=new TimeSpan(t2.Tick);

string diff=ts22.Subtract(ts11).TotalMinutes.ToString();

Subtract:表示两个时间段的差

diff:就表示两个时间相差的分钟数,上面的例子就是610分钟。

得到一个 TimeSpan 实例,TimeSpan 有一些属性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、Ticks,注意没有 TotalTicks。

这些属性名称开始理解有些困难,但阅读本文后,相应您一定茅塞顿开。

举例说明

  • 时间 1 是 2010-1-2 8:43:35;
  • 时间 2 是 2010-1-12 8:43:34。

用时间 2 减时间 1,得到一个 TimeSpan 实例。

那么时间 2 比时间 1 多 9 天 23 小时 59 分 59 秒。

那么,Days 就是 9,Hours 就是 23,Minutes 就是 59,Seconds 就是 59。

所以以后想知道两个时间段的差就容易的多





TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数

//你的代码或者其他操作

TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks); 
TimeSpan ts = ts2.Subtract(ts1).Duration();
//时间差的绝对值 ,测试你的代码运行了多长时间。

String spanTime = ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "" + ts.Seconds.ToString() + ""; 
//
X小时XX秒的格式显示执行时间

C#时间间隔计算的一些说明:
TimeSpan
值包含了许多属性与方法,用于访问或处理一个TimeSpan 
下面的列表涵盖了其中的一部分: 
Add
:与另一个TimeSpan值相加。 
Days:
返回用天数计算的TimeSpan值。 
Duration:
获取TimeSpan的绝对值。 
Hours:
返回用小时计算的TimeSpan 
Milliseconds:
返回用毫秒计算的TimeSpan值。 
Minutes:
返回用分钟计算的TimeSpan值。 
Negate:
返回当前实例的相反数。 
Seconds:
返回用秒计算的TimeSpan值。 
Subtract:
从中减去另一个TimeSpan值。 
Ticks:
返回TimeSpan值的tick数。 
TotalDays:
返回TimeSpan值表示的天数。 
TotalHours:
返回TimeSpan值表示的小时数。 
TotalMilliseconds:
返回TimeSpan值表示的毫秒数。 
TotalMinutes:
返回TimeSpan值表示的分钟数。 
TotalSeconds:
返回TimeSpan值表示的秒数。

 

[c-sharp]  view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Text;  
  7. using System.Windows.Forms;  
  8.   
  9. namespace TimeSpanUse  
  10. {  
  11.     public partial class Form1 : Form  
  12.     {  
  13.         private TimeSpan tsBegin ;  
  14.         private TimeSpan tsEnd;  
  15.         public Form1()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
  19.   
  20.         private void btBegin_Click(object sender, EventArgs e)  
  21.         {  
  22.             this.lblBegin.Text = DateTime.Now.ToLongTimeString();  
  23.             tsBegin = new TimeSpan(DateTime.Now.Ticks);  
  24.         }  
  25.   
  26.         private void btStop_Click(object sender, EventArgs e)  
  27.         {  
  28.             this.lblEnd.Text = DateTime.Now.ToLongTimeString();  
  29.             tsEnd = new TimeSpan(DateTime.Now.Ticks);  
  30.             TimeSpan ts = tsEnd.Subtract(tsBegin).Duration();//:获取TimeSpan的绝对值  
  31.             String spanTime = ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒";  
  32.             this.lblPass.Text = spanTime;  
  33.         }  
  34.   
  35.         private void Form1_Load(object sender, EventArgs e)  
  36.         {  
  37.   
  38.             this.timer1.Interval = 1 * 1000;//1秒  
  39.             this.timer1.Enabled = true;//开始计时  
  40.             this.lblNow.Text = DateTime.Now.ToLongTimeString();  
  41.         }  
  42.         /// <summary>  
  43.         /// 间隔时间执行事情  
  44.         /// </summary>  
  45.         /// <param name="sender"></param>  
  46.         /// <param name="e"></param>  
  47.         private void timer1_Tick(object sender, EventArgs e)  
  48.         {  
  49.             //TextBox1.Text   =   DateTime.Now.ToString("yyyy-MM-dd   HH:mm:ss")     
  50.             this.lblNow .Text = DateTime.Now.ToLongTimeString();  
  51.         }  
  52.     }  
  53. }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值