c#winform中怎么获得上周一的日期
答案:3 悬赏:50 手机版
解决时间 2021-11-07 09:30
- 提问者网友:蓝琪梦莎
- 2021-11-07 00:51
c#winform中怎么获得上周一的日期
最佳答案
- 五星知识达人网友:玩家
- 2021-11-07 01:26
楼上几层的代码都太多了,不用那么复杂。
先跟你说一下原理:
1.国际上的WeekDay是从周日到周六的顺序
2.再说C#的DayOfWeek枚举值是依次从0到6,即周一的枚举值为1
3.算法规律:非周一的就要去获取上周一,而一周有7天。以周一为分界点,当天为周二及往后,则算法为减7天后再减当天N数再加1;周日的话,算法为减7天后再加1。
以此算法规律,可建立获取任意指定日期的上周几的日期的通用方法,代码如下:
pubilc DateTime getWeekUpOfDate(DateTime dt,DayOfWeek weekday,int Number)
{
int wd1=(int)weekday;
int wd2=(int)dt.DayOfWeek;
return wd2==wd1?dt.AddDay(7*Number):dt.AddDay(7*Number-wd2+wd1);
}
参数说明:dt为指定的以哪个日期来计算,weekday为计算(上、当前、下)几周的周几
方法调用如下:
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,-1);
这是获取当前日期的上周一的日期
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,-2);
这是获取当前日期的上上周一的日期
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,1);
这是获取当前日期的下周一的日期
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,0);
这是获取本周周一的日期
先跟你说一下原理:
1.国际上的WeekDay是从周日到周六的顺序
2.再说C#的DayOfWeek枚举值是依次从0到6,即周一的枚举值为1
3.算法规律:非周一的就要去获取上周一,而一周有7天。以周一为分界点,当天为周二及往后,则算法为减7天后再减当天N数再加1;周日的话,算法为减7天后再加1。
以此算法规律,可建立获取任意指定日期的上周几的日期的通用方法,代码如下:
pubilc DateTime getWeekUpOfDate(DateTime dt,DayOfWeek weekday,int Number)
{
int wd1=(int)weekday;
int wd2=(int)dt.DayOfWeek;
return wd2==wd1?dt.AddDay(7*Number):dt.AddDay(7*Number-wd2+wd1);
}
参数说明:dt为指定的以哪个日期来计算,weekday为计算(上、当前、下)几周的周几
方法调用如下:
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,-1);
这是获取当前日期的上周一的日期
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,-2);
这是获取当前日期的上上周一的日期
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,1);
这是获取当前日期的下周一的日期
DateTime dt=getWeekUpOfDate(DateTime.Now,DayOfWeek.Monday,0);
这是获取本周周一的日期
全部回答
- 1楼网友:愁杀梦里人
- 2021-11-07 03:28
DateTime dt = DateTime.Now.AddDays(-7);
string result = string.Empty;
switch (dt.DayOfWeek)
{
case DayOfWeek.Friday:
result = dt.AddDays(-4).ToShortDateString();
break;
case DayOfWeek.Monday:
result = dt.AddDays(0).ToShortDateString();
break;
case DayOfWeek.Saturday:
result = dt.AddDays(-5).ToShortDateString();
break;
case DayOfWeek.Sunday:
result = dt.AddDays(-6).ToShortDateString();
break;
case DayOfWeek.Thursday:
result = dt.AddDays(-3).ToShortDateString();
break;
case DayOfWeek.Tuesday:
result = dt.AddDays(-1).ToShortDateString();
break;
case DayOfWeek.Wednesday:
result = dt.AddDays(-2).ToShortDateString();
break;
}
//return result;
string result = string.Empty;
switch (dt.DayOfWeek)
{
case DayOfWeek.Friday:
result = dt.AddDays(-4).ToShortDateString();
break;
case DayOfWeek.Monday:
result = dt.AddDays(0).ToShortDateString();
break;
case DayOfWeek.Saturday:
result = dt.AddDays(-5).ToShortDateString();
break;
case DayOfWeek.Sunday:
result = dt.AddDays(-6).ToShortDateString();
break;
case DayOfWeek.Thursday:
result = dt.AddDays(-3).ToShortDateString();
break;
case DayOfWeek.Tuesday:
result = dt.AddDays(-1).ToShortDateString();
break;
case DayOfWeek.Wednesday:
result = dt.AddDays(-2).ToShortDateString();
break;
}
//return result;
- 2楼网友:底特律间谍
- 2021-11-07 02:20
DateTime dateTime= DateTime.Now;//具体你自己调整
while(dateTime.DayOfWeek !=DayOfWeek.Friday){//只要不是周一
dateTime=dateTime.AddDays(-1);//就往回倒退1天
}
dateTime=dateTime.AddDays(-7);//上周的那一天
while(dateTime.DayOfWeek !=DayOfWeek.Friday){//只要不是周一
dateTime=dateTime.AddDays(-1);//就往回倒退1天
}
dateTime=dateTime.AddDays(-7);//上周的那一天
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯