timespan 結構 表示一個時間間隔。
命名空間:system 程序集:mscorlib(在 mscorlib.dll 中)
說明: 1.datetime值類型代表了一個從公元0001年1月1日0點0分0秒到公元9999年12月31日23點59分59秒之間的具體日期時刻。因此,你可以用datetime值類型來描述任何在想象范圍之內的時間。timespan值包含了許多屬性與方法,用于訪問或處理一個timespan值,
其中的五個重載方法之一的結構 timespan( int days, int hours, int minutes, int seconds )
下面的列表涵蓋了其中的一部分方法及屬性解釋
- 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值表示的秒數。
代碼實例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
timespan ts = new timespan(12, 12, 11, 12, 21); int days = new timespan(12, 12, 11, 12, 21).days; timespan duration = new timespan(-12, 12, 11, 12, 21).duration(); //24小時的反值 double totaldays = new timespan(12, 12, 11, 12, 21).totaldays; double totalhours = new timespan(2, 12, 11, 12, 21).totalhours; int hours = new timespan(12, 12, 11, 12, 21).hours; int minutes = new timespan(12, 12, 11, 12, 21).minutes; timespan ts2 = new timespan(1, 3, 01, 12, 21); // timespan ts2 = new timespan(5, 3, 1, 12, 21);//this is also right timespan ts3 = new timespan(5, 3, 01, 12, 21).add(ts); timespan ts4 = new timespan(4, 3, 01, 12, 21).subtract(ts); timespan ts5 = new timespan(4, 3, 01, 12, 21).subtract(ts).duration(); timespan negate = new timespan(5, 3, 01, 12, 21).negate(); datetime dtnow = datetime.now; console.writeline(ts); console.writeline(days); console.writeline(duration); console.writeline(totaldays); console.writeline(totalhours); console.writeline(hours); console.writeline(minutes); console.writeline(ts2); console.writeline(ts+ts2); console.writeline(ts3); console.writeline( "subtract:" +ts4); console.writeline( "duration:" + ts5); console.writeline(ts - ts2); console.writeline(negate); datetime span = datetime.now.add(ts2); timespan spdate = span - datetime.now; long dateticks = datetime.now.add(ts2).ticks; console.writeline(span); console.writeline(spdate); console.writeline(dateticks); |
負數
上面是較晚的日期減較早的日期,所以各屬性值為正數,如果是較早的日期減較晚的日期,則屬性值為負數。
asp.net 中,兩個時間相減,得到一個 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。
再來看 ticks,tick 是一個計時周期,表示一百納秒,即一千萬分之一秒,那么 ticks 在這里表示總共相差多少個時間周期,即:9 * 24 * 3600 * 10000000 + 23 * 3600 * 10000000 +59 * 60 * 10000000 + 59 * 10000000 = 8639990000000。3600 是一小時的秒數。
totaldays 就是把 ticks 換算成日數,即:8639990000000 / (10000000 * 24 * 3600) = 9.99998842592593。
totalhours 就是把 ticks 換算成小時數,即:8639990000000 / (10000000 * 3600) = 239.999722222222。
totalminutes 就是把 ticks 換算成分鐘數,即:8639990000000 / (10000000 * 60) = 14399.9833333333。
totalseconds 就是把 ticks 換算成秒數,即:8639990000000 / (10000000) = 863999。
以下提供一些常用的方法
求離最近發表時間的函數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
public string datestringfromnow(datetime dt) { timespan span = datetime.now - dt; if (span.totaldays > 60) { return dt.toshortdatestring(); } else if ( span.totaldays > 30 ) { return "1個月前" ; } else if (span.totaldays > 14) { return "2周前" ; } else if (span.totaldays > 7) { return "1周前" ; } else if (span.totaldays > 1) { return string .format( "{0}天前" , ( int )math.floor(span.totaldays)); } else if (span.totalhours > 1) { return string .format( "{0}小時前" , ( int )math.floor(span.totalhours)); } else if (span.totalminutes > 1) { return string .format( "{0}分鐘前" , ( int )math.floor(span.totalminutes)); } else if (span.totalseconds >= 1) { return string .format( "{0}秒前" , ( int )math.floor(span.totalseconds)); } else { return "1秒前" ; } } |
c#中使用timespan計算兩個時間的差值
可以反加兩個日期之間任何一個時間單位。
1
2
3
4
5
6
7
8
9
10
11
|
private string datediff(datetime datetime1, datetime datetime2) { string datediff = null ; timespan ts1 = new timespan(datetime1.ticks); timespan ts2 = new timespan(datetime2.ticks); timespan ts = ts1.subtract(ts2).duration(); datediff = ts.days.tostring()+ "天" + ts.hours.tostring()+ "小時" + ts.minutes.tostring()+ "分鐘" + ts.seconds.tostring()+ "秒" ; return datediff; } timespan ts = date1 - date2; double ddays = ts.totaldays; //帶小數的天數,比如1天12小時結果就是1.5 |
比如1天12小時結果就是1.5
int ndays = ts.days;//整數天數,1天12小時或者1天20小時結果都是1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/// <summary> /// 日期比較 /// </summary> /// <param name="today">當前日期</param> /// <param name="writedate">輸入日期</param> /// <param name="n">比較天數</param> <returns>大于天數返回 true ,小于返回 false </returns> private bool comparedate( string today, string writedate, int n) { datetime today = convert.todatetime(today); datetime writedate = convert.todatetime(writedate); writedate = writedate.adddays(n); if (today>= writedate) return false ; else return true ; } |
在定義date數據類型時候,必須注意下面三點:
1. date數值必須以數字符號"#"括起來。
2. date數值中的日期數據可有可無,如果有必須符合格式"m/d/yyyy"。
3. date數值中的時間數據可有可無,如果有必須和日期數據通過空格分開,并且時分秒之間以":"分開。
一.datetime和timespan的關系和區別:
datetime和timespan是visual basic .net中用以處理時間日期類型數據的二個主要的結構,這二者的區別在于,dattime表示一個固定的時間,而timespan表示的是一個時間間隔, 即一段時間。在下面介紹的程序示例中,timespan就用以當前時間和給定時間之差。
二.datetime和timespan中的常用成員及其說明:
datetime結構和timespan結構提供了豐富的方法和屬性,
屬性 說明
- date 獲取此實例的日期部分。
- day 獲取此實例所表示的日期為該月中的第幾天。
- dayofweek 獲取此實例所表示的日期是星期幾。
- dayofyear 獲取此實例所表示的日期是該年中的第幾天。
- hour 獲取此實例所表示日期的小時部分。
- millisecond 獲取此實例所表示日期的毫秒部分。
- minute 獲取此實例所表示日期的分鐘部分。
- month 獲取此實例所表示日期的月份部分。
- now 創建一個datetime實例,它是此計算機上的當前本地日期和時間。
- second 獲取此實例所表示日期的秒部分。
- timeofday 獲取此實例的當天的時間。
- today 獲取當前日期。
- year 獲取此實例所表示日期的年份部分。
- add 將指定的timespan的值加到此實例的值上。
- adddays 將指定的天數加到此實例的值上。
- addhours 將指定的小時數加到此實例的值上。
- addmilliseconds 將指定的毫秒數加到此實例的值上。
- addminutes 將指定的分鐘數加到此實例的值上。
- addmonths 將指定的月份數加到此實例的值上。
- addseconds 將指定的秒數加到此實例的值上。
- addyears 將指定的年份數加到此實例的值上。
- daysinmonth 返回指定年份中指定月份的天數。
- isleapyear 返回指定的年份是否為閏年的指示。
- parse 將日期和時間的指定字符串表示轉換成其等效的datetime實例。
- subtract 從此實例中減去指定的時間或持續時間。
- tolongdatestring 將此實例的值轉換為其等效的長日期字符串表示形式。
- tolongtimestring 將此實例的值轉換為其等效的長時間字符串表示形式。
- toshorttimestring 將此實例的值轉換為其等效的短時間字符串表示形式。
- toshortdatestring 將此實例的值轉換為其等效的短日期字符串表示形式。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/qinpengming/p/3265579.html