這篇文章主要介紹了C#如何獲取當(dāng)前年份的周期及周期所在日期范圍,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)十余年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)營銷解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:成都圍欄護(hù)欄等企業(yè),備受客戶稱揚(yáng)。
最近有一個(gè)項(xiàng)目要用到年份周期,用于數(shù)據(jù)統(tǒng)計(jì)圖表展示使用,當(dāng)中用到年份周期,以及年份周期所在的日期范圍。當(dāng)初設(shè)想通過已知數(shù)據(jù)來換算年份周期,經(jīng)過搜索資料發(fā)現(xiàn)通過數(shù)據(jù)庫SQL語句來做,反而更加復(fù)雜?,F(xiàn)在改變思路通過C#后臺(tái)代碼來算出兩段日期范圍中年份周期,在依據(jù)年份周期所對(duì)應(yīng)的日期范圍進(jìn)行數(shù)據(jù)庫查詢進(jìn)行統(tǒng)計(jì)。需要解決以下兩個(gè)點(diǎn)問題,
第一點(diǎn):依據(jù)日期查找所在年份的第幾周;
第二點(diǎn):依據(jù)年份所在的周期計(jì)算出周期所在的日期范圍。
using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication6 { class Program { static void Main(string[] args) { GregorianCalendar gc = new GregorianCalendar(); int weekOfYear = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday); Console.WriteLine("當(dāng)前第{0}周", weekOfYear); DateTime startDate, lastDate; for (int i = 1; i <= 53; i++) { GetDaysOfWeeks(DateTime.Now.Year, i, out startDate, out lastDate); Console.WriteLine("第{0}周", i); Console.WriteLine(startDate); Console.WriteLine(lastDate); } Console.ReadLine(); } public static bool GetDaysOfWeeks(int year, int index, out DateTime first, out DateTime last) { first = DateTime.MinValue; last = DateTime.MinValue; if (year < 1700 || year > 9999) { //"年份超限" return false; } if (index < 1 || index > 53) { //"周數(shù)錯(cuò)誤" return false; } DateTime startDay = new DateTime(year, 1, 1); //該年第一天 DateTime endDay = new DateTime(year + 1, 1, 1).AddMilliseconds(-1); int dayOfWeek = 0; if (Convert.ToInt32(startDay.DayOfWeek.ToString("d")) > 0) dayOfWeek = Convert.ToInt32(startDay.DayOfWeek.ToString("d")); //該年第一天為星期幾 if (dayOfWeek == 0) { dayOfWeek = 7; } if (index == 1) { first = startDay.AddDays(7 - dayOfWeek - 6); if (dayOfWeek == 6) { last = first; } else { last = startDay.AddDays((7 - dayOfWeek)); } } else { first = startDay.AddDays((8 - dayOfWeek) + (index - 2) * 7); //index周的起始日期 last = first.AddDays(6); //if (last > endDay) //{ // last = endDay; //} } if (first > endDay) //startDayOfWeeks不在該年范圍內(nèi) { //"輸入周數(shù)大于本年最大周數(shù)"; return false; } return true; } } }
執(zhí)行結(jié)果
C#是一個(gè)簡單、通用、面向?qū)ο蟮木幊陶Z言,它由微軟Microsoft開發(fā),繼承了C和C++強(qiáng)大功能,并且去掉了一些它們的復(fù)雜特性,C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程從而成為.NET開發(fā)的首選語言,但它不適用于編寫時(shí)間急迫或性能非常高的代碼,因?yàn)镃#缺乏性能極高的應(yīng)用程序所需要的關(guān)鍵功能。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C#如何獲取當(dāng)前年份的周期及周期所在日期范圍”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
新聞標(biāo)題:C#如何獲取當(dāng)前年份的周期及周期所在日期范圍
URL標(biāo)題:http://muchs.cn/article18/ijoodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、建站公司、做網(wǎng)站、用戶體驗(yàn)、定制網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)