C#巧用DateTime預設可選的日期規模(如今年度、本季度、本月等)。本站提示廣大學習愛好者:(C#巧用DateTime預設可選的日期規模(如今年度、本季度、本月等))文章只能為提供參考,不一定能成為您想要的結果。以下是C#巧用DateTime預設可選的日期規模(如今年度、本季度、本月等)正文
本文實例為年夜家分享了C# DateTime預設可選的日期規模的相干代碼,可以選擇今年度、本季度、本月等,供年夜家參考,詳細內容以下
後果:
年夜家在做報表或查詢的時刻都邑有給用戶預設一些可選的日期規模(如上圖)
如今年度發賣額、本季度利潤、本月新增客戶
C#裡內置的DateTime根本上都可以完成這些功效,巧用DateTime會使你處置這些事來變輕松多了
//明天 DateTime.Now.Date.ToShortDateString(); //昨天,就是明天的日期減一 DateTime.Now.AddDays(-1).ToShortDateString(); //今天,同理,加一 DateTime.Now.AddDays(1).ToShortDateString(); //本周(要曉得本周的第一天就得先曉得明天是禮拜幾,從而得知本周的第一天就是幾天前的那一天,要留意的是這裡的每周是從周日始至周六止 DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString(); DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString(); //假如你還不明確,再看一下中文顯示禮拜幾的辦法就應當懂了 //因為DayOfWeek前往的是數字的禮拜幾,我們要把它轉換成漢字便利我們浏覽,有些人能夠會用switch來一個一個地對比,其實不消那末費事的 string[] Day = new string[] { "禮拜日", "禮拜一", "禮拜二", "禮拜三", "禮拜四", "禮拜五", "禮拜六" }; Day[Convert.ToInt16(DateTime.Now.DayOfWeek)]; //上周,同理,一個周是7天,上周就是本周再減去7天,下周也是一樣 DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString(); DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString(); //下周 DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString(); DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString(); //本月,許多人都邑說本月的第一天嘛確定是1號,最初一天就是下個月一號再減一天。固然這是對的 //普通的寫法 DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1"; //第一天 DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();//最初一天 //巧用C#裡ToString的字符格局化更輕便 DateTime.Now.ToString("yyyy-MM-01"); DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString(); //上個月,減去一個月份 DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString(); DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString(); //下個月,加去一個月份 DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString(); DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString(); //7天後 DateTime.Now.Date.ToShortDateString(); DateTime.Now.AddDays(7).ToShortDateString(); //7天前 DateTime.Now.AddDays(-7).ToShortDateString(); DateTime.Now.Date.ToShortDateString(); //今年度,用ToString的字符格局化我們也很輕易地算出今年度的第一天和最初一天 DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString(); DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString(); //上年度,不消再說明了吧 DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString(); DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString(); //下年度 DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString(); DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString(); //本季度,許多人都邑認為這裡難點,須要寫個長長的進程來斷定。其實不消的,我們都曉得一年四個季度,一個季度三個月 //起首我們先把日期推到本季度第一個月,然後這個月的第一天就是本季度的第一天了 DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01"); //同理,本季度的最初一天就是下季度的第一天減一 DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString(); //下季度,信任你們都曉得了。。。。出工 DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01"); DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString(); //上季度 DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01"); DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
DateTime比擬
我在日記摘要中已經用到了日期的比擬,我須要比擬動身布日記的時光和以後的日期比擬,假如是在三天內宣布的,那末我就要在這個日記的後面加上“新”字。
我之前的算法很費事,就是將字符串轉換成整形,然後再盤算。
我想用DateTime來直接比擬。我起首將宣布日期(字符串)轉換成日期型:
/盤算宣布日期 DateTime PubDate=new DateTime(); // PubDate=item["創立者"]; string strPubDate=item["創立者"].ToString(); DateTime dt1=new DateTime(DateTime.Parse(strPubDate));
在最開端的時刻,我直接就在下面這個語句中加了三天,語句就是如許的了:
DateTime dt1=new DateTime(int.Parse(strY),int.Parse(strM),(int.Parse(strD)+3),0,0,0,0);
成果,老是失足。緣由在哪裡呢?
我跟蹤調試了一下,發明了成績的地點。當宣布的日記在每個月的28日今後,因為直接在轉換的時刻加了3,好比29+3=32,32是沒有方法轉換成日期型的。
所以,我就改正了這個毛病,然後在比擬的時刻,用DateTime.Adddays(3)來完成這個操作:
//盤算以後日期 DateTime CurrentDate=new DateTime(); CurrentDate=DateTime.Now; if(CurrentDate<DT1.ADDDAYS(3)) { str=str+" !新"; }
假如,您只想比擬日期能否相等的話,您可以用DateTime.Compare(dt1,dt2).
以上就是本文的全體內容,願望對年夜家的進修有所贊助。