因为要写一个维修生产力的数据录入,数据分析的程序,需要用到周别。但是不知道怎么算,网上的文章好像都不适合;只好自己拍脑袋想了。
每年1/1开始不管第一周满不满7天都算一周。
思路: 找到第一周或者第二周作基准周,然后根据当前日期与基准周的Monday之间的差异天来计算当前的周别。
代码写的简单自己能看懂,好像看的难受,有没有高手有比较简单的方法,谢谢
- private void CalWeekNo()
- {
- string base_day, curr_day,base_day_of_week;
- DateTime DT_base;
- int base_day_of_year,curr_day_of_year;
- base_day = "1/1/" + dateTimePicker1.Value.Year;
- curr_day = dateTimePicker1.Value.ToString();
- DT_base = DateTime.Parse(base_day);
- base_day_of_year = DT_base.DayOfYear;
- curr_day_of_year = dateTimePicker1.Value.DayOfYear;
- base_day_of_week = DT_base.DayOfWeek.ToString();
- int day_dif;
- day_dif = curr_day_of_year - base_day_of_year;
- switch (base_day_of_week)
- {
- case "Monday":
- weekNo_curr = day_dif / 7 + 1;
- break;
- case "Tuesday":
- weekNo_curr = (day_dif+1) / 7 + 1;
- break;
- case "Wednesday":
- weekNo_curr = (day_dif + 2) / 7 + 1;
- break;
- case "Thursday":
- weekNo_curr = (day_dif + 3) / 7 + 1;
- break;
- case "Friday":
- weekNo_curr = (day_dif + 4) / 7 + 1;
- break;
- case "Saturday":
- weekNo_curr = (day_dif + 5) / 7 + 1;
- break;
- case "Sunday":
- weekNo_curr = (day_dif + 6) / 7 + 1;
- break;
- }
- }