首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DayOfWeek获得下一个DayOfWeek(星期一,Tuesday...Sunday)

DayOfWeek获得下一个DayOfWeek(星期一,Tuesday...Sunday)
EN

Stack Overflow用户
提问于 2015-09-28 15:34:22
回答 5查看 1.7K关注 0票数 6

有没有办法将这段代码概括成1-2行?

我的目标是返回,例如,我有一个DayOfWeek,这是星期一,我想得到的第二天(星期二)或n天之后。

代码语言:javascript
复制
         switch (_RESETDAY)
        {
            case DayOfWeek.Monday:
                _STARTDAY = DayOfWeek.Tuesday;
                break;
            case DayOfWeek.Tuesday:
                _STARTDAY = DayOfWeek.Wednesday;
                break;
            case DayOfWeek.Wednesday:
                _STARTDAY = DayOfWeek.Thursday;
                break;
            case DayOfWeek.Thursday:
                _STARTDAY = DayOfWeek.Friday;
                break;
            case DayOfWeek.Friday:
                _STARTDAY = DayOfWeek.Saturday;
                break;
            case DayOfWeek.Saturday:
                _STARTDAY = DayOfWeek.Sunday;
                break;
            case DayOfWeek.Sunday:
                _STARTDAY = DayOfWeek.Monday;
                break;
            default:
                _STARTDAY = DayOfWeek.Tuesday;
                break;
        }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-09-28 15:39:14

这只是一个int枚举,范围从星期日(0)到星期六(6),如MSDN所示:

DayOfWeek枚举以每周有七天的日历表示一周中的一天。此枚举中常量的值从DayOfWeek.Sunday到DayOfWeek.Saturday不等。如果转换为整数,则其值从零(指示DayOfWeek.Sunday)到六(指示DayOfWeek.Saturday)。

所以简单的数学应该做到:

代码语言:javascript
复制
DayOfWeek nextDay = (DayOfWeek)(((int)_RESETDAY + 1) % 7);

如果需要的话,用+ 1替换为+ n

票数 10
EN

Stack Overflow用户

发布于 2015-09-28 15:37:10

是。

代码语言:javascript
复制
(DayOfWeek)((int)(_RESETDAY+1)%7)
票数 4
EN

Stack Overflow用户

发布于 2015-09-28 15:44:01

与上面回答的添加和模块的结果相同,但是更易读的imho:

代码语言:javascript
复制
day = (day == DayOfWeek.Saturday) ? DayOfWeek.Sunday : day + 1;

显而易见的代码意图总是更令人愉快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32826723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档