預設(今天、明天、昨天)時間範圍觀念
- 2008-02-11
- 21480
- 0
如果你有作過類似報表的東西,可能就會使用到今天、昨天、前天、本月、上月這些預設的按鈕,讓使用者按下以後可以直接搜尋時間範圍的值,所以本篇就說明一下邏輯,以後你就無敵啦。
//今天這最好寫啦預設就有 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(),這部份使用者可以依照自己的習慣去修改程式碼,至於其他沒寫到的,其實稍微推一下就出來了,有了觀念以後,時間範圍的預設對你來說就不會是問題了
回應討論