//取得某月的最后一天 //方法一:使用算出該月多少天,年+月+加上多少天即得,,舉例取今天這個月的最后一天 private void GetLastDateForMonth(DateTime DtStart, out DateTime DtEnd) { int Dtyear, DtMonth; DtStart = DateTime.Now; Dtyear = DtStart.Year; DtMonth = DtStart.Month; int MonthCount = DateTime.DaysInMonth(Dtyear, DtMonth);//計算該月有多少天 DtEnd = Convert.ToDateTime(Dtyear.ToString() + "-" + DtMonth.ToString() + "-" + MonthCount); } //方法二:取出下月的第一天減去一天便是這個月的最后一天 private void GetLastDateForMonth(DateTime DtStart, out DateTime DtEnd) { int Dtyear, DtMonth;
DtStart = DateTime.Now.AddMonths(1);//月份加1 Dtyear = DtStart.Year; DtMonth = DtStart.Month; DtEnd = Convert.ToDateTime(Dtyear.ToString() + "-" + DtMonth.ToString() + "-" + "1").AddDays(-1);//取出下月的第一天減去一天 }
二,、時間差的計算 法一、使用TimeSpan ,,同時也介紹一下TimeSpan的用法 相關(guān)屬性和函數(shù) Add:與另一個TimeSpan值相加,。 Days:返回用天數(shù)計算的TimeSpan值。 Duration:獲取TimeSpan的絕對值,。 Hours:返回用小時計算的TimeSpan值 Milliseconds:返回用毫秒計算的TimeSpan值,。 Minutes:返回用分鐘計算的TimeSpan值。 Negate:返回當(dāng)前實例的相反數(shù),。 Seconds:返回用秒計算的TimeSpan值,。 Subtract:從中減去另一個TimeSpan值。 Ticks:返回TimeSpan值的tick數(shù),。 TotalDays:返回TimeSpan值表示的天數(shù),。 TotalHours:返回TimeSpan值表示的小時數(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()+"小時" +d3.Minutes.ToString()+"分鐘" +d3.Seconds.ToString()+"秒"; 法二、使用Sql中的DATEDIFF函數(shù) 使用方法:DATEDIFF ( datepart , startdate , enddate ) 它能幫你取出你想要的各種形式的時間差,,如相隔多少天,,多少小時,多少分鐘等,,具體格式如下:
日期部分縮寫
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 |
如:datediff(mi,DtOpTime,DtEnd) 便能取出他們之間時間差的分鐘總數(shù),,已經(jīng)幫你換算好了,對于要求規(guī)定單位,,時,、分、秒特別有用 三 計算兩個日期之間相差的工作日天數(shù)(轉(zhuǎn)載:http://wrfwjn.blog.hexun.com/482517_d.html)
/// <summary> /// 計算兩個日期之間相差的工作日天數(shù) /// </summary> /// <param name="dtStart">開始日期</param> /// <param name="dtEnd">結(jié)束日期</param> /// <returns>Int</returns> public int CalculateWorkingDays(DateTime dtStart, DateTime dtEnd) { int count=0; for(DateTime dtTemp=dtStart;dtTemp<dtEnd;dTemp=dtTemp.AddDays(1)) { // if(dtTemp.DayOfWeek!=DayOfWeek.Saturday&&dtTemp.DayOfWeek!=DayOfWeek.Sunday) // { // count++; // } count++; } return count; }
1.DateTime DateTime now = System.DateTime.Now; now.ToString(); //顯示: 2006/08/30 17:31:02 now.ToString("yyyy-mm-dd hh:MM:ss"); //顯示: 2006-08-30 05:39:11 now.ToString("yyyy-mm-dd HH:mm:ss"); //顯示: 2006-08-30 17:40:50 System.DateTime.MaxValue.ToString(); //顯示: 9999/12/31 23:59:59 System.DateTime.MinValue.ToString(); //顯示: 0001/01/01 0:00:00 now.ToLongDateString(); //顯示: 2006年8月30日 now.ToLongTimeString(); //顯示: 17:34:23 now.ToShortTimeString(); //顯示: 17:34 now.ToString() + " " + now.Millisecond.ToString(); //顯示: 2006/08/30 17:35:19 484
2.程序運行時間:(單位 : 毫秒) System.Diagnostics ; //名稱空間 int x = 0; int nu = 0; Stopwatch sw = new Stopwatch(); sw.Start(); //程序開始 for (int i = 0; i < 1000000; i++) { x += i; } //程序結(jié)束 sw.Stop(); this.label1.Text += ",sum=" + x.ToString(); MessageBox.Show(sw.ElapsedMilliseconds.ToString()); 3.計算一個頁面執(zhí)行時間: 在Global.asax.cs文件中增加以下代碼: protected void Application_BeginRequest(Object sender, EventArgs e) { Application["StartTime"] = System.DateTime.Now; } protected void Application_EndRequest(Object sender, EventArgs e) { System.DateTime startTime = (System.DateTime)Application["StartTime"]; System.DateTime endTime = System.DateTime.Now; System.TimeSpan ts = endTime - startTime; Response.Write("頁面執(zhí)行所用時間:" + ts.Milliseconds + " 毫秒"); }
DateTime是內(nèi)置的事件類型,,TimeSpan是內(nèi)置的事件間隔類型 兩個類型為DateTime的變量作-運算得到類型為TimeSpan的數(shù)據(jù) DateTime.Now是一個只讀屬性,,返回當(dāng)前的時間,類型為DateTime TimeSpan :根據(jù)輸入日期計算兩個指定日期之間的時間間隔,。
語法:String TimeSpan('轉(zhuǎn)義字符','被比較日期','目標(biāo)比較日期')
傳回值:字符
參數(shù)說明:
轉(zhuǎn)義字符:輸入類型為字符,,具有不同格式化字符的字符如內(nèi)容說明中所例。輸入字符內(nèi)的格式化字符被格式化后輸出,,其他不屬于格式化的字符則根據(jù)對應(yīng)位置輸出,。'被比較日期':輸入類型為字符,需要被比較的日期格式的字符內(nèi)容,。'目標(biāo)比較日期':輸入類型為字符,,用來比較的目標(biāo)日期格式的字符內(nèi)容。
內(nèi)容說明:根據(jù)輸入日期計算兩個指定日期之間的時間間隔,。
轉(zhuǎn)義字符說明:T:獲取兩個日期之間差異刻度表示的差異值。(正數(shù)或負(fù)數(shù))d:獲取兩個日期之間差異的整天數(shù),。(正數(shù)或負(fù)數(shù))h:獲取兩個日期之間差異的整小時數(shù),。(正數(shù)或負(fù)數(shù))u:獲取兩個日期之間差異的整毫秒數(shù)。(正數(shù)或負(fù)數(shù))m:獲取兩個日期之間差異的整分鐘數(shù),。(正數(shù)或負(fù)數(shù))s:獲取兩個日期之間差異的整秒數(shù),。(正數(shù)或負(fù)數(shù))D:獲取兩個日期之間以整天數(shù)和天的小數(shù)部分表示的差異值。(正數(shù)或負(fù)數(shù))H:獲取兩個日期之間以整小時數(shù)和小時的小數(shù)部分表示的差異值,。(正數(shù)或負(fù)數(shù))U:獲取兩個日期之間整毫秒數(shù)和毫秒的小數(shù)部分表示的差異值,。(正數(shù)或負(fù)數(shù))M:獲取兩個日期之間以整分鐘數(shù)和分鐘的小數(shù)部分表示的差異值。(正數(shù)或負(fù)數(shù))S:獲取兩個日期之間以整秒數(shù)和秒的小數(shù)部分表示的差異值,。(正數(shù)或負(fù)數(shù))
C#測試程序執(zhí)行時間:
DateTime beginTime = ... DateTime endTime = System.DateTime.Now; TimeSpan costTime = endTime - beginTime; //兩個時間差精確到毫秒 string costStr = costTime.TotalMilliseconds.ToString("#000");
TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //獲取當(dāng)前時間的刻度數(shù) //執(zhí)行某操作 TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan ts = ts2.Subtract(ts1).Duration(); //時間差的絕對值
string spanTotalSeconds = ts.TotalSeconds.ToString(); //執(zhí)行時間的總秒數(shù) string spanTime = ts.Hours.ToString() + "小時" + ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒"; //以X小時X分X秒的格式現(xiàn)實執(zhí)行時間
|