如何在 asp.net 中的 "Weeks" 下拉列表中设置当前周数

how do i set current week number in the drop down "Weeks" in asp.net

我有一个下拉菜单 "Weeks"。默认情况下,我希望它显示当前一周。我试过用这个

 for (int i = 1; i <= 5; i++)
 {

    ddlWeek.SelectedValue = ((DateTime.Now.Day + 6 / 7 ).ToString());
 }

但问题来自“29/12/14 - 31/12/14”,它显示的是第 5 周。但是当它的“1/1/15”显示的是第 1 周时,我认为这是非常不正确的.我的预期结果是

  29/12/14 - 4/1/15 = "week 5",  
  5/1/15 - 11/1/15 = "week 1", 
  12/1/15 - 18/1/15 = "week 2",
  19/1/15 - 25/1/15 = "week 3",
  26/1/15 - 1/2/15 = "week 4",
  2/2/15 - 8/2/15 = "week 1"

等等。我该怎么做才能让结果看起来像这样??

此代码也许可以帮助您: 我在这个 post 的响应中修改代码: Get a list of weeks for a year - with dates

您只需要一个名为 DropDownList1 的 DropDownList 并将代码粘贴到 Page_Load 事件中进行测试。

        var jan1 = new DateTime(DateTime.Today.Year, 1, 1);

        var startOfFirstWeek = jan1.AddDays(1 - (int)(jan1.DayOfWeek));
        var weeks =
            Enumerable
                .Range(0, 54)
                .Select(i => new
                {
                    weekStart = startOfFirstWeek.AddDays(i * 7)
                })
                .TakeWhile(x => x.weekStart.Year <= jan1.Year)
                .Select(x => new
                {
                    x.weekStart,
                    weekFinish = x.weekStart.AddDays(6)
                })
                .SkipWhile(x => x.weekFinish < jan1.AddDays(1))
                .Select((x, i) => new
                {
                    x.weekStart,
                    x.weekFinish,
                    weekNum = i + 1
                });


        //After get weeks' information, manipulate it to get the results.
        DateTime Today = Convert.ToDateTime(DateTime.Now.Date.ToShortDateString()); //Convert to ShortDate to delete the HH:mm:ss
        string lblItem = "";

        foreach (var X in weeks)
        {
            //Check the Month and the Year must be from the actual Month
            if (X.weekStart.Month == Today.Month || X.weekFinish.Month == Today.Month && X.weekFinish.Year == Today.Year)
            {
                lblItem = "#" + X.weekNum + " " + X.weekStart.ToShortDateString() + " - " + X.weekFinish.ToShortDateString();
                DropDownList1.Items.Add(lblItem); //Add item in DropDownList
                if (Today >= X.weekStart && Today <= X.weekFinish) //Check if the current date is between the week
                    DropDownList1.SelectedValue = lblItem; //Select the current week                 
            }
        }

如果你想手动添加有值的项目,你可以这样做。然后将项目与当前日期进行比较,就像我在代码中所做的那样。

希望对您有所帮助。