如何在 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
}
}
如果你想手动添加有值的项目,你可以这样做。然后将项目与当前日期进行比较,就像我在代码中所做的那样。
希望对您有所帮助。
我有一个下拉菜单 "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
}
}
如果你想手动添加有值的项目,你可以这样做。然后将项目与当前日期进行比较,就像我在代码中所做的那样。
希望对您有所帮助。