private int DateDiff(DateTime dateStart, DateTime dateEnd)
{
DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());
DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString());
TimeSpan sp = end.Subtract(start);
return sp.Days;
}
DateTime dt1 = DateTime.Now.AddDays(1); DateTime dt2 = DateTime.Now; int i = dt1.CompareTo(dt2); 這個(gè)就能看出來差一天了
如果我想算"2017-2-13 23:59:59"到"2017-2-14 0:00:01"這兩個(gè)時(shí)間相差的天數(shù),那應(yīng)該是1天,但是用樓上的代碼得到的只有2秒的時(shí)間差。
想要算相隔天數(shù),可以這樣:
string str1 = "2017-2-13 23:59:59";
string str2 = "2017-2-14 0:00:01";
DateTime d1 = Convert.ToDateTime(str1);
DateTime d2 = Convert.ToDateTime(str2);
DateTime d3 = Convert.ToDateTime(string.Format("{0}-{1}-{2}", d1.Year, d1.Month, d1.Day));
DateTime d4 = Convert.ToDateTime(string.Format("{0}-{1}-{2}", d2.Year, d2.Month, d2.Day));
int days = (d4 - d3).Days;
時(shí)間差的計(jì)算
方法一:
使用TimeSpan ,同時(shí)也介紹一下TimeSpan的用法
相關(guān)屬性和函數(shù)
Add:與另一個(gè)TimeSpan值相加。
Days:返回用天數(shù)計(jì)算的TimeSpan值。
Duration:獲取TimeSpan的絕對(duì)值。
Hours:返回用小時(shí)計(jì)算的TimeSpan值
Milliseconds:返回用毫秒計(jì)算的TimeSpan值。
Minutes:返回用分鐘計(jì)算的TimeSpan值。
Negate:返回當(dāng)前實(shí)例的相反數(shù)。
Seconds:返回用秒計(jì)算的TimeSpan值。
Subtract:從中減去另一個(gè)TimeSpan值。
Ticks:返回TimeSpan值的tick數(shù)。
TotalDays:返回TimeSpan值表示的天數(shù)。
TotalHours:返回TimeSpan值表示的小時(shí)數(shù)。
TotalMilliseconds:返回TimeSpan值表示的毫秒數(shù)。
TotalMinutes:返回TimeSpan值表示的分鐘數(shù)。
TotalSeconds:返回TimeSpan值表示的秒數(shù)。
簡單示例:
DateTime d1 =new DateTime(2004,1,1,15,36,05);
DateTime d2 =new DateTime(2004,3,1,20,16,35);
TimeSpan d3 = d2.Subtract(d1);
LbTime.Text = "相差:"
+d3.Days.ToString()+"天"
+d3.Hours.ToString()+"小時(shí)"
+d3.Minutes.ToString()+"分鐘"
+d3.Seconds.ToString()+"秒";
方法二、使用Sql中的DATEDIFF函數(shù)
使用方法:DATEDIFF ( datepart , startdate , enddate )
它能幫你取出你想要的各種形式的時(shí)間差,如相隔多少天,多少小時(shí),多少分鐘等,具體格式如下:
日期部分縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
DateTime是內(nèi)置的事件類型,TimeSpan是內(nèi)置的事件間隔類型
兩個(gè)類型為DateTime的變量作-運(yùn)算得到類型為TimeSpan的數(shù)據(jù)
DateTime.Now是一個(gè)只讀屬性,返回當(dāng)前的時(shí)間,類型為DateTime
TimeSpan :根據(jù)輸入日期計(jì)算兩個(gè)指定日期之間的時(shí)間間隔。
語法:String TimeSpan('轉(zhuǎn)義字符','被比較日期','目標(biāo)比較日期')
傳回值:字符
參數(shù)說明:
轉(zhuǎn)義字符:輸入類型為字符,具有不同格式化字符的字符如內(nèi)容說明中所例。輸入字符內(nèi)的格式化字符被格式化后輸出,其他不屬于格式化的字符則根據(jù)對(duì)應(yīng)位置輸出。'被比較日期':輸入類型為字符,需要被比較的日期格式的字符內(nèi)容。'目標(biāo)比較日期':輸入類型為字符,用來比較的目標(biāo)日期格式的字符內(nèi)容。
內(nèi)容說明:根據(jù)輸入日期計(jì)算兩個(gè)指定日期之間的時(shí)間間隔。
轉(zhuǎn)義字符說明:T:獲 取兩個(gè)日期之間差異刻度表示的差異值。(正數(shù)或負(fù)數(shù))d:獲取兩個(gè)日期之間差異的整天數(shù)。(正數(shù)或負(fù)數(shù))h:獲取兩個(gè)日期之間差異的整小時(shí)數(shù)。(正數(shù)或負(fù) 數(shù))u:獲取兩個(gè)日期之間差異的整毫秒數(shù)。(正數(shù)或負(fù)數(shù))m:獲取兩個(gè)日期之間差異的整分鐘數(shù)。(正數(shù)或負(fù)數(shù))s:獲取兩個(gè)日期之間差異的整秒數(shù)。(正數(shù) 或負(fù)數(shù))D:獲取兩個(gè)日期之間以整天數(shù)和天的小數(shù)部分表示的差異值。(正數(shù)或負(fù)數(shù))H:獲取兩個(gè)日期之間以整小時(shí)數(shù)和小時(shí)的小數(shù)部分表示的差異值。(正數(shù) 或負(fù)數(shù))U:獲取兩個(gè)日期之間整毫秒數(shù)和毫秒的小數(shù)部分表示的差異值。(正數(shù)或負(fù)數(shù))M:獲取兩個(gè)日期之間以整分鐘數(shù)和分鐘的小數(shù)部分表示的差異值。(正 數(shù)或負(fù)數(shù))S:獲取兩個(gè)日期之間以整秒數(shù)和秒的小數(shù)部分表示的差異值。(正數(shù)或負(fù)數(shù))
private static int DateDiff(DateTime dateStart, DateTime dateEnd)
{
DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());
DateTime end = Convert.ToDateTime(dateStart.ToShortDateString());
TimeSpan sp = end.Subtract(start);
return sp.Days;
}
該文章在 2023/4/4 10:57:25 編輯過