首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用.Net提取当前周的日期?

问是否使用.Net提取当前周的日期?
EN

Stack Overflow用户
提问于 2015-06-07 17:44:35
回答 2查看 59关注 0票数 0

我正在尝试提取当前星期的日期,但我就是找不到一种合理、智能的方法来代替冗长的case、switches和if语句。有谁知道用.Net解压它们的相对简单的方法吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-06-07 17:52:27

DateTime.DayOfWeek是一个以Sunday开始的枚举,从0开始往前走。如果你取今天的星期几,它也会告诉你多少天前的星期天。因此,假设一周从周日开始,那么返回那么多天将得到本周的周日。你可以在一周的七天中从这一点开始。

代码语言:javascript
复制
var today = DateTime.Now;
var thisSunday = today.AddDays(-(int)today.DayOfWeek);

for (int i=0; i<7; i++)
  Console.WriteLine(thisSunday.AddDays(i).ToString());

如果一周从星期一开始,请使用

代码语言:javascript
复制
var thisMonday = today.AddDays(-(((int)today.DayOfWeek + 6) % 7));
票数 3
EN

Stack Overflow用户

发布于 2015-06-07 18:13:37

您可以使用扩展方法设置周的开始日期(credit goes to @Compile This)

代码语言:javascript
复制
public static class DateTimeExtensions
{
    public static DateTime StartOfWeek(this DateTime datetime, DayOfWeek startOfWeek)
    {
        int difference = datetime.DayOfWeek - startOfWeek;
        if (difference >= 0)
            return datetime.AddDays(-1 * difference).Date;
        difference += 7;
        return datetime.AddDays(-1 * difference).Date;
    }
}

然后,您可以使用与@Sami_Kuhmonen提到的相同的循环来获取星期几:

代码语言:javascript
复制
        DateTime d = DateTime.Now.StartOfWeek(DayOfWeek.Saturday);
        for (int i = 0; i < 7; i++)
            Console.WriteLine(d.AddDays(i));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30692102

复制
相关文章

相似问题

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