C 根據當前時間獲取,本週,本月,本季度等時間段

2022-02-17 08:04:01 字數 4393 閱讀 8847

datetime dt = datetime.now;  //當前時間  

datetime startweek = dt.adddays(1 - convert.toint32(dt.dayofweek.tostring("d")));  //本週周一  

datetime endweek = startweek.adddays(6);  //本週週日  

datetime startmonth = dt.adddays(1 - dt.day);  //本月月初  

datetime endmonth = startmonth.addmonths(1).adddays(-1);  //本月月末  

//datetime endmonth = startmonth.adddays((dt.addmonths(1) - dt).days - 1);  //本月月末  

datetime startquarter = dt.addmonths(0 - (dt.month - 1) % 3).adddays(1 - dt.day);  //本季度初  

datetime endquarter = startquarter.addmonths(3).adddays(-1);  //本季度末  

datetime startyear = new datetime(dt.year, 1, 1);  //本年年初  

datetime endyear = new datetime(dt.year, 12, 31);  //本年年末  

至於昨天、明天、上週、上月、上季度、上年度等等,只要adddays()、addmonths()、addyears()這幾種方法組合一下就可以了。  

c#中datetime的使用  

//如果你還不明白,再看一下中文顯示星期幾的方法就應該懂了  

//由於dayofweek返回的是數字的星期幾,我們要把它轉換成漢字方便我們閱讀,有些人可能會用switch來乙個乙個地對照,其實不用那麼麻煩的  

string day = new string ;  

string week = day[convert.toint32(datetime.now.dayofweek.tostring("d"))].tostring();  

//上週,同理,乙個週是7天,上週就是本週再減去7天,下週也是一樣  

datetime.now.adddays(convert.toint32 (1 - convert.toint32(datetime.now.dayofweek)) - 7);        //上週一  

datetime.now.adddays(convert.toint32 (1 - convert.toint32(datetime.now.dayofweek)) - 7).adddays(6);     //上周末(星期日)  

//下週  

datetime.now.adddays(convert.toint32 (1 - convert.toint32(datetime.now.dayofweek)) + 7);        //下周一  

datetime.now.adddays(convert.toint32(1 - convert.toint32(datetime.now.dayofweek)) + 7).adddays(6);      //下週末  

//本月,很多人都會說本月的第一天嘛肯定是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)).adddays(1 - datetime.now.day);  

//同理,本季度的最後一天就是下季度的第一天減一  

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)). adddays(1 - datetime.now);  

datetime.now.addmonths(0 - ((datetime.now.month - 1) % 3)).adddays(1 - datetime.now.day).adddays(-1).toshortdatestring();

分類: c#資料操作類

標籤: c#根據當前時間獲取, 本週, 本月, 本季度等時間段

C 根據當前時間獲取 本月 上月 本週

datetime dt datetime.now 當前時間 datetime startweek dt.adddays 1 convert.toint32 dt.dayofweek.tostring d 本週周一 datetime endweek startweek.adddays 6 本週週日 d...

C 根據當前時間獲取,本週,本月,本季度等時間段

datetime dt datetime.now 當前時間 datetime startweek dt.adddays 1 convert.toint32 dt.dayofweek.tostring d 本週周一 datetime endweek startweek.adddays 6 本週週日 d...

根據當前時間獲取,本週,本月,本季度等時間段

當前時間 1 d 本週周一 6 本週週日 1 本月月初 1 adddays 1 本月月末 本月月末 0 1 3 adddays 1 本季度初 3 adddays 1 本季度末 new11 本年年初 new 1231 本年年末 至於昨天 明天 上週 上月 上季度 上年度等等,只要adddays add...