using System;
class Program3
{
static void Main()
{
int year, year1, year2, month1, month2, day1, day2, week, sum = 0;
int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i;
Console.Write("年:");
year = int.Parse(Console.ReadLine());
Console.Write("周次:");
week = int.Parse(Console.ReadLine());
if (year < 0)
{
Console.WriteLine("年份错误,必须大于等于0");
return;
}
if (week < 1 || week > 54)
{
Console.WriteLine("周次错误,必须位于 1 .. 53 之间");
return;
}
sum += 7 * (week - 1);
//修正总天数
switch (DateTime.Parse(year + "-1-1").DayOfWeek)
{
case DayOfWeek.Tuesday:
{
sum -= 1;
break;
}
case DayOfWeek.Wednesday:
{
sum -= 2;
break;
}
case DayOfWeek.Thursday:
{
sum -= 3;
break;
}
case DayOfWeek.Friday:
{
sum -= 4;
break;
}
case DayOfWeek.Saturday:
{
sum -= 5;
break;
}
case DayOfWeek.Sunday:
{
sum -= 6;
break;
}
default:
break;
}
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
days[1] = 29;
}
for (i = 0; i < days.Length; i++)
{
if (sum >= days[i])
{
sum -= days[i];
}
else
{
break;
}
}
year1 = year;
month1= i + 1;
day1 = sum + 1;
//修改开始日期
if (day1 < 1)
{
day1 += days[11];
month1 = 12;
year1--;
}
year2 = year1;
month2 = month1;
day2 = day1 + 6;
if (day2 > days[month1 - 1])
{
day2 -= days[month1 - 1];
month2++;
if (month2 > 12)
{
month2 = 1;
year2++;
}
}
Console.WriteLine("{0}年第{1}周 : {2}年{3}月{4}日 ~ {5}年{6}月{7}日", year, week, year1, month1, day1, year2, month2, day2);
}
}
运行测试:
年:2011
周次:1
2011年第1周 : 2010年12月27日 ~ 2011年1月2日
年:2011
周次:22
2011年第22周 : 2011年5月23日 ~ 2011年5月29日
年:2011
周次:53
2011年第53周 : 2011年12月26日 ~ 2012年1月1日
原网址:https://zhidao.baidu.com/question/272740354.html
这是个控制台程序,Console.ReadLine()那里写年和周