C# 计算每年年初与年末的周数 (iso 8601)
根據ISO 8601標準,
第一個日歷星期有以下四種等效說法(參考:https://baike.baidu.com/item/ISO%208601/3910715?fr=aladdin):
1,本年度第一個星期四所在的星期;
2,1月4日所在的星期;
3,本年度第一個至少有4天在同一星期內的星期;
4,星期一在去年12月29日至今年1月4日以內的星期;
推理可得,如果1月1日是星期一、星期二、星期三或者星期四,它所在的星期就是第一個日歷星期;如果1月1日是星期五、星期六或者星期日,它所在的星期就是上一年第52或者53個日歷星期;12月28日總是在一年最后一個日歷星期。
例如:
????????2021年1月1日,周五,按照標準則是在2020年的第53周; 通過C# WeekOfYear函數得出的是2021年第1周。
????????2019年12月31日,周二,按照標準則是在2020年的第1周; 通過C# WeekOfYear函數得出的是2019年第53周。
?
得出符合規范的周數 代碼如下:
??????? private void Calweeks()
??????? {
??????????? // 對12-29,12-30,12-31 判斷是否是新年的第一周;對1-1,1-2,1-3 判斷是否是上一年的最后一周,若是,新年的第一周從周四開始(系統獲得的周數需要減一)
??????????? 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";//默認序列號
??????? }
總結
以上是生活随笔為你收集整理的C# 计算每年年初与年末的周数 (iso 8601)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级字处理题根据参考样式,全国计算
- 下一篇: 接上一章winhex数据恢复新手入门教程