C# 獲取當前年份的周期及周期所在日期范圍(推薦)
最近有一個項目要用到年份周期,用于數(shù)據(jù)統(tǒng)計圖表展示使用,當中用到年份周期,以及年份周期所在的日期范圍。當初設想通過已知數(shù)據(jù)來換算年份周期,經(jīng)過搜索資料發(fā)現(xiàn)通過數(shù)據(jù)庫SQL語句來做,反而更加復雜?,F(xiàn)在改變思路通過C#后臺代碼來算出兩段日期范圍中年份周期,在依據(jù)年份周期所對應的日期范圍進行數(shù)據(jù)庫查詢進行統(tǒng)計。需要解決以下兩個點問題,
第一點:依據(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("當前第{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ù)錯誤"
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不在該年范圍內
{
//"輸入周數(shù)大于本年最大周數(shù)";
return false;
}
return true;
}
}
}
執(zhí)行結果
總結
以上所述是小編給大家介紹的C# 獲取當前年份的周期及周期所在日期范圍(推薦),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
上一篇:C#中參數(shù)數(shù)組、引用參數(shù)和輸出參數(shù)示例詳解
欄 目:C#教程
本文標題:C# 獲取當前年份的周期及周期所在日期范圍(推薦)
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5181.html
您可能感興趣的文章
- 01-10C#通過反射獲取當前工程中所有窗體并打開的方法
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實現(xiàn)判斷當前操作用戶管理角色的方法
- 01-10C#獲取進程或線程相關信息的方法
- 01-10C#調用dos窗口獲取相關信息的方法
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10C#獲取任務欄顯示進程的方法
- 01-10C#及WPF獲取本機所有字體和顏色的方法
- 01-10C#獲取動態(tài)生成的CheckBox值
- 01-10C#獲取網(wǎng)頁源代碼的方法


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
- 01-10關于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
隨機閱讀
- 01-10C#中split用法實例總結
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什


