C# Asp.net日历-生成日期

C# Asp.net日历-生成日期,c#,asp.net,date,calendar,code-behind,C#,Asp.net,Date,Calendar,Code Behind,作为一个项目的一部分,我正试图在Asp.net中创建一个日历,它完全是用C代码编写的# 我正在使用一个转发器,并从codebehind中填充内容,这很好。我可以使用Datetime获取今天的日期、月份等 但是当我试图计算一周中前几天和后几天的日期时,代码变得非常混乱,我想知道是否有更好的方法来计算 目前,这是我为特定日期生成日期的方式 if (today == "Monday" || today.Equals("Monday")) { switc

作为一个项目的一部分,我正试图在Asp.net中创建一个日历,它完全是用C代码编写的# 我正在使用一个转发器,并从codebehind中填充内容,这很好。我可以使用Datetime获取今天的日期、月份等

但是当我试图计算一周中前几天和后几天的日期时,代码变得非常混乱,我想知道是否有更好的方法来计算

目前,这是我为特定日期生成日期的方式

if (today == "Monday" || today.Equals("Monday"))
            {
             switch (days)
                {
                    case "0":
                        return DateTime.Today.AddDays(0).ToString("dd");
                    case "1":
                        return DateTime.Today.AddDays(1).ToString("dd");
                    case "2":
                        return DateTime.Today.AddDays(2).ToString("dd");
                    case "3":
                        return DateTime.Today.AddDays(3).ToString("dd");
                    case "4":
                        return DateTime.Today.AddDays(4).ToString("dd");
                    case "5":
                        return DateTime.Today.AddDays(5).ToString("dd");
                    case "6":
                        return DateTime.Today.AddDays(6).ToString("dd");
                    default:
                        return "error";
                }
            }
然后是星期二

else if (today == "Tuesday" || today.Equals("Tuesday"))
            {
                switch (days)
                {
                    case "0":
                        return DateTime.Today.AddDays(-1).ToString("dd");
                    case "1":
                        return DateTime.Today.AddDays(0).ToString("dd");
                    case "2":
                        return DateTime.Today.AddDays(1).ToString("dd");
                    case "3":
                        return DateTime.Today.AddDays(2).ToString("dd");
                    case "4":
                        return DateTime.Today.AddDays(3).ToString("dd");
                    case "5":
                        return DateTime.Today.AddDays(4).ToString("dd");
                    case "6":
                        return DateTime.Today.AddDays(5).ToString("dd");
                    default:
                        return "error";
                }
            }
在星期二的例子中,情况“0”是星期一,因此如果是星期二,我从当前日期减去1天,得到前一天的日期。代码运行得非常好,但我忍不住想一定有更好的方法

我必须为一周中的每一天创建这段代码,唯一真正改变的是“AddDays()中的整数”

还要注意切换的原因是,所有if语句都是在for循环中调用的,因此切换中会出现奇数情况

如果有比我更聪明的人有更简单的方法来实现这一点,请随时告诉我

  • 向安德烈亚斯·哈尔德致以最良好的问候

我不太理解days变量的含义,但我假设这是您想要向后或向前移动的天数 您可以简单地使用以下代码:

return DateTime.Today.AddDays(days + todayDateTime.DayOfWeek).ToString("dd");
然后可以使用“days”变量控制下一天和前一天,变量为1或-1。
这有意义吗?

这是正确的。是的,如果我没有充分澄清,很抱歉。days变量只是for循环中的计数器变量,我没有包括在内,开关中的不同情况不是需要向前或向后移动的天数,而是需要日期的日期表示。我现在意识到,它的名称可能很愚蠢,所以在这种情况下,您可以将我的代码更改为:days+(DayOfWeek.Monday-todayDateTime.DayOfWeek)//如果days=0,星期一todayDateTime.DayOfWeek->1返回0+1-1=0天+(DayOfWeek.Monday-todayDateTime.DayOfWeek)//如果天=1,星期一todayDateTime.DayOfWeek->1返回1+1-1=1天+(DayOfWeek.Monday-todayDateTime.DayOfWeek)//如果天=0,星期二todayDateTime.DayOfWeek->2返回0+1-2=-1天+(DayOfWeek.Monday-todayDateTime.DayOfWeek)//如果天为1,星期二为todayDateTime.DayOfWeek->2,返回1+1-2=0