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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C# 计算每年年初与年末的周数 (iso 8601)

發(fā)布時(shí)間:2023/12/20 C# 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 计算每年年初与年末的周数 (iso 8601) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

根據(jù)ISO 8601標(biāo)準(zhǔn),

第一個(gè)日歷星期有以下四種等效說(shuō)法(參考:https://baike.baidu.com/item/ISO%208601/3910715?fr=aladdin):

1,本年度第一個(gè)星期四所在的星期;

2,1月4日所在的星期;

3,本年度第一個(gè)至少有4天在同一星期內(nèi)的星期;

4,星期一在去年12月29日至今年1月4日以?xún)?nèi)的星期;

推理可得,如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一個(gè)日歷星期;如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53個(gè)日歷星期;12月28日總是在一年最后一個(gè)日歷星期。

例如:

????????2021年1月1日,周五,按照標(biāo)準(zhǔn)則是在2020年的第53周; 通過(guò)C# WeekOfYear函數(shù)得出的是2021年第1周。

????????2019年12月31日,周二,按照標(biāo)準(zhǔn)則是在2020年的第1周; 通過(guò)C# WeekOfYear函數(shù)得出的是2019年第53周。

?

得出符合規(guī)范的周數(shù) 代碼如下:

??????? private void Calweeks()
??????? {
??????????? // 對(duì)12-29,12-30,12-31 判斷是否是新年的第一周;對(duì)1-1,1-2,1-3 判斷是否是上一年的最后一周,若是,新年的第一周從周四開(kāi)始(系統(tǒng)獲得的周數(shù)需要減一)
??????????? string year = DateTime.Now.Year.ToString().Substring(2);
??????????? string week = WeekOfYear(DateTime.Now, CultureInfo.CurrentCulture).ToString();
??????????? if (DateTime.Now.ToString("m") == "12月29日")
??????????? {
??????????????? if (DateTime.Now.ToString("dddd") == "星期一")
??????????????? {
??????????????????? year = (Convert.ToInt32(year) + 1).ToString();
??????????????????? week = "01";
??????????????? }
??????????? }
??????????? else if (DateTime.Now.ToString("m") == "12月30日")
??????????? {
??????????????? if (DateTime.Now.ToString("dddd") == "星期一" | DateTime.Now.ToString("dddd") == "星期二")
??????????????? {
??????????????????? year = (Convert.ToInt32(year) + 1).ToString();
??????????????????? week = "01";
??????????????? }
??????????? }
??????????? else if (DateTime.Now.ToString("m") == "12月31日")
??????????? {
??????????????? if (DateTime.Now.ToString("dddd") == "星期一" | DateTime.Now.ToString("dddd") == "星期二" | DateTime.Now.ToString("dddd") == "星期三")
??????????????? {
??????????????????? year = (Convert.ToInt32(year) + 1).ToString();
??????????????????? week = "01";
??????????????? }
??????????? }
??????????? else if (DateTime.Now.ToString("m") == "1月1日")
??????????? {
??????????????? if (DateTime.Now.ToString("dddd") == "星期五" | DateTime.Now.ToString("dddd") == "星期六" | DateTime.Now.ToString("dddd") == "星期日")
??????????????? {
??????????????????? year = (Convert.ToInt32(year) - 1).ToString();
??????????????????? week = WeekOfYear(Convert.ToDateTime(year + "年" + "12月28日"), CultureInfo.CurrentCulture).ToString();
??????????????? }
??????????? }
??????????? else if (DateTime.Now.ToString("m") == "1月2日")
??????????? {
??????????????? if (DateTime.Now.ToString("dddd") == "星期六" | DateTime.Now.ToString("dddd") == "星期日")
??????????????? {
??????????????????? year = (Convert.ToInt32(year) - 1).ToString();
??????????????????? week = WeekOfYear(Convert.ToDateTime(year + "年" + "12月28日"), CultureInfo.CurrentCulture).ToString();
??????????????? }
??????????? }
??????????? else if (DateTime.Now.ToString("m") == "1月3日")
??????????? {
??????????????? if (DateTime.Now.ToString("dddd") == "星期日")
??????????????? {
??????????????????? year = (Convert.ToInt32(year) - 1).ToString();
??????????????????? week = WeekOfYear(Convert.ToDateTime(year + "年" + "12月28日"), CultureInfo.CurrentCulture).ToString();
??????????????? }
??????????? }
??????????? if (Convert.ToDateTime(year + "年" + "1月1日").ToString("dddd") == "星期五" | Convert.ToDateTime(year + "年" + "1月1日").ToString("dddd") == "星期六" | Convert.ToDateTime(year + "年" + "1月1日").ToString("dddd") == "星期日")
??????????? {
??????????????? week = (Convert.ToInt32(week) - 1).ToString();
??????????? }
??????????? else if (Convert.ToDateTime(year + "年" + "1月2日").ToString("dddd") == "星期六" | Convert.ToDateTime(year + "年" + "1月2日").ToString("dddd") == "星期日")
??????????? {
??????????????? week = (Convert.ToInt32(week) - 1).ToString();
??????????? }
??????????? else if (Convert.ToDateTime(year + "年" + "1月3日").ToString("dddd") == "星期日")
??????????? {
??????????????? week = (Convert.ToInt32(week) - 1).ToString();
??????????? }
??????????? if (week.Length < 2)
??????????? {
??????????????? week = "0" + week;
??????????? }
??????????? if (year.Length < 2)
??????????? {
??????????????? year = "0" + year;
??????????? }
??????????? numericUpDown1.Text = year + week + "01";//默認(rèn)序列號(hào)
??????? }

總結(jié)

以上是生活随笔為你收集整理的C# 计算每年年初与年末的周数 (iso 8601)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。