日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

转:[C#]获取某年指定周的开始日期和结束日期的通用方法

發布時間:2025/1/21 C# 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:[C#]获取某年指定周的开始日期和结束日期的通用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來自:http://blog.csdn.net/vrhero/archive/2008/01/13/2042481.aspx

?

///?<summary>
///?獲取一年中指定的一周的開始日期和結束日期。開始日期遵循ISO?8601即星期一。
///?</summary>
///?<remarks>Write?by?vrhero</remarks>
///?<param?name="year">年(1?到?9999)</param>
///?<param?name="weeks">周(1?到?53)</param>
///?<param?name="weekrule">確定首周的規則</param>
///?<param?name="first">當此方法返回時,則包含參數?year?和?weeks?指定的周的開始日期的?System.DateTime?值;如果失敗,則為?System.DateTime.MinValue。如果參數?year?或?weeks?超出有效范圍,則操作失敗。該參數未經初始化即被傳遞。</param>
///?<param?name="last">當此方法返回時,則包含參數?year?和?weeks?指定的周的結束日期的?System.DateTime?值;如果失敗,則為?System.DateTime.MinValue。如果參數?year?或?weeks?超出有效范圍,則操作失敗。該參數未經初始化即被傳遞。</param>
///?<returns>成功返回?true,否則為?false。</returns>

public?static?bool?GetDaysOfWeeks(int?year,?int?weeks,?CalendarWeekRule?weekrule,?out?DateTime?first,?out?DateTime?last)
{
????
//初始化?out?參數
????first?=?DateTime.MinValue;
????last?
=?DateTime.MinValue;

????
//不用解釋了吧...
????if?(year?<?1?|?year?>?9999)
????????
return?false;

????
//一年最多53周地球人都知道...
????if?(weeks?<?1?|?weeks?>?53)
????????
return?false;

????
//取當年首日為基準...為什么?容易得唄...
????DateTime?firstCurr?=?new?DateTime(year,?1,?1);
????
//取下一年首日用于計算...
????DateTime?firstNext?=?new?DateTime(year?+?1,?1,?1);

????
//將當年首日星期幾轉換為數字...星期日特別處理...ISO?8601?標準...
????int?dayOfWeekFirst?=?(int)firstCurr.DayOfWeek;
????
if?(dayOfWeekFirst?==?0)?dayOfWeekFirst?=?7;

????
//得到未經驗證的周首日...
????first?=?firstCurr.AddDays((weeks?-?1)?*?7?-?dayOfWeekFirst?+?1);

????
//周首日是上一年日期的情況...
????if?(first.Year?<?year)
????
{
????????
switch?(weekrule)
????????
{
????????????
case?CalendarWeekRule.FirstDay:
????????????????
//不用解釋了吧...
????????????????first?=?firstCurr;
????????????????
break;
????????????
case?CalendarWeekRule.FirstFullWeek:
????????????????
//順延一周...
????????????????first?=?first.AddDays(7);
????????????????
break;
????????????
case?CalendarWeekRule.FirstFourDayWeek:
????????????????
//周首日距年首日不足4天則順延一周...
????????????????if?(firstCurr.Subtract(first).Days?>?3)
????????????????
{
????????????????????first?
=?first.AddDays(7);
????????????????}

????????????????
break;
????????????
default:
????????????????
break;
????????}

????}


????
//得到未經驗證的周末日...
????last?=?first.AddDays(7).AddSeconds(-1);

????
//周末日是下一年日期的情況...
????if?(last.Year?>?year)
????
{
????????
switch?(weekrule)
????????
{
????????????
case?CalendarWeekRule.FirstDay:
????????????????last?
=?firstNext.AddSeconds(-1);
????????????????
break;
????????????
case?CalendarWeekRule.FirstFullWeek:
????????????????
//不用處理
????????????????break;
????????????
case?CalendarWeekRule.FirstFourDayWeek:
????????????????
//周末日距下一年首日不足4天則提前一周...
????????????????if?(firstNext.Subtract(first).Days?<?4)
????????????????
{
????????????????????first?
=?first.AddDays(-7);
????????????????????last?
=?last.AddDays(-7);
????????????????}

????????????????
break;
????????????
default:
????????????????
break;
????????}

????}

????
return?true;
}

總結

以上是生活随笔為你收集整理的转:[C#]获取某年指定周的开始日期和结束日期的通用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。