1. 程式人生 > >C#中計算兩個時間的差

C#中計算兩個時間的差

因為前幾段做專案需要用到計算時間差,今天有時間就整理出來了。希望能對初學者有幫助。(*^__^*) 嘻嘻……

一、首先,介紹幾個簡單的概念。如下:

1.DateTime

DateTime值型別代表了一個從公元0001年1月1日0點0分0秒到公元9999年12月31日23點59分59秒之間的具體日期時刻。

因此,你可以用DateTime值型別來描述任何在想象範圍之內的時間。一個DateTime值代表了一個具體的時刻

2.TimeSpan

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值表示的秒數。

二、之後,根據上面的介紹,進行例項說明。

///<summary>
        
/// 計算時間差
        
///</summary>
        
///<param name="t">時間1</param>
        
///<param name="t2">時間2</param>
        
///<returns>返回值:時間差(毫秒為單位)</returns>

privatelong TimeDiff(DateTime t, DateTime t2) 
        
{
            
long lReturn =-1;
            System.TimeSpan NowValue 
=new TimeSpan(t.Ticks);
            System.TimeSpan TimeValue 
=new TimeSpan(t2.Ticks);
            System.TimeSpan DateDiff 
= TimeSpan.Zero;
            
try
            
{
                
//計算時間差
                
//DateDiff = TimeValue.Subtract(NowValue).Duration();
                DateDiff = TimeValue.Subtract(NowValue);
                
int hours = DateDiff.Hours;
                
int minutes = DateDiff.Minutes;
                
int seconds = DateDiff.Seconds;
                
int milliseconds = DateDiff.Milliseconds;

                
string TimeDiff = hours.ToString() +":"
                    
+ minutes.ToString() +":"
                    
+ seconds.ToString() +"."
                    
+ milliseconds.ToString();
                Program.log.WriteLog(
"時間差:"+TimeDiff, System.DateTime.Now.ToString(), Orid.Log.LogManagerBase.LogMode.logNormal);
                
//是否比現在的時間小,如果小就設定成第二天再啟動,否則當天啟動
if (hours <=0&& minutes <=0&& seconds <=0&& milliseconds <=0)
                    hours 
+=24;

                lReturn 
= hours *3600*1000
                    
+ minutes *60*1000
                    
+ seconds *1000
                    
+ milliseconds;
            }

            
catch (Exception e) {
                
thrownew Exception(e.Message);
            }

            
return lReturn;
        }

三、最後呼叫此函式即可。

long dueTime =this.TimeDiff(System.DateTime.Now, Convert.ToDateTime(config.Pitch));
                    
//timer = new System.Threading.Timer(tcb, auto, dueTime, System.Threading.Timeout.Infinite);
                    timer =new System.Threading.Timer(tcb, auto, dueTime, 24*3600*1000);

以上,完成。。程式碼都很簡單,所以不做具體介紹了。