demoshop

demo, trying to be the best_

如果你有作過類似報表的東西,可能就會使用到今天、昨天、前天、本月、上月這些預設的按鈕,讓使用者按下以後可以直接搜尋時間範圍的值,所以本篇就說明一下邏輯,以後你就無敵啦。

//今天這最好寫啦預設就有
DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/dd");
//昨天,就是今天的日減一
DateTime.UtcNow.AddHours(8).AddDays(-1).ToString("yyyy/MM/dd");
 
 
//明天,就是今天的日加一
DateTime.UtcNow.AddHours(8).AddDays(+1).ToString("yyyy/MM/dd");
//前天,就是今天減二囉
DateTime.UtcNow.AddHours(8).AddDays(-2).ToString("yyyy/MM/dd"); 

 

//本週(想知道本週的第一天就先抓到今天是星期幾,然後就可以知道怎麼抓到星期日
DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((0 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek)))).ToString("yyyy/MM/dd");
//本週第一天
 
DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((6 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek)))).ToString("yyyy/MM/dd");
//本週最後一天 

♥小提醒:我們是利用Convert.ToInt16()的方法把DayOfWeek轉換成數字,這樣子我用0減去該數字就可以知道第一天,同理我用6減去該數字就可以知道最後一天了(一週的第一天是星期日唷)

//上週,一週7天,上週就是本週減去7天,下週也是一樣滴
DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((0 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek))) - 7).ToString("yyyy/MM/dd");
 
DateTime.UtcNow.AddHours(8).AddDays(Convert.ToInt16((6 - Convert.ToInt16(DateTime.UtcNow.AddHours(8).DayOfWeek))) - 7).ToString("yyyy/MM/dd");
 

//本月,之前的寫法就是抓到這個月份把日期改成1號,最後一天就是下個月1號再減一天,但是在c#裡面有更快的寫法  
DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/01");
 
DateTime.Parse(DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/01")).AddMonths(1).AddDays(-1).ToString("yyyy/MM/dd");



//上個月,就是本月減掉一個月
DateTime.UtcNow.AddHours(8).AddMonths(-1).ToString("yyyy/MM/01");
 
DateTime.Parse(DateTime.UtcNow.AddHours(8).ToString("yyyy/MM/01")).AddDays(-1).ToString("yyyy/MM/dd");



//本季,一年有四季,所以一季是三個月沒錯吧,所以我們利用下方就可以抓到這是那一季,接者再抓出第一天
DateTime.UtcNow.AddHours(8).AddMonths(0 - ((DateTime.UtcNow.AddHours(8).Month - 1) % 3)).ToString("yyyy/MM/01");
 
DateTime.Parse(DateTime.UtcNow.AddHours(8).AddMonths(3 - ((DateTime.UtcNow.AddHours(8).Month - 1) % 3)).ToString("yyyy/MM/01")).AddDays(-1).ToString("yyyy/MM/dd"); 


?小鋪廢言:因為demo的考量所以抓取現在時間的方式我都是使用DateTime.UtcNow.AddHours(8)不是用DateTime.Now(),這部份使用者可以依照自己的習慣去修改程式碼,至於其他沒寫到的,其實稍微推一下就出來了,有了觀念以後,時間範圍的預設對你來說就不會是問題了

回應討論