一年某一周转换成具体日期

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()那里写年和周

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值