gpt4 book ai didi

c# - 循环一周的日期,直到在该周内找到假期

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:40 26 4
gpt4 key购买 nike

我有一个要求,我需要在某个星期的假期中禁用时间表中的字段,我需要禁用当天的字段。但它一直循环到数据库中存在的假期结束。例如,我将开始日期设为 2013 年 8 月 11 日,我需要循环到 2013 年 8 月 15 日这周,因为 8 月 15 日是印度的独立日。

应在 8 月 15 日禁用该字段。但在这里我得到了像圣诞节这样的值(value),它是一年中的最后一个公共(public)假期,并且它一直受到影响......

代码:

DateTime dtstart = Convert.ToDateTime(startdate);
con.Open();
OleDbCommand cmd1 = new OleDbCommand("select * from ind_holidays", con);
OleDbDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
string holiday = dr1[0].ToString();
string date = dr1[1].ToString().Substring(0, 10);
DateTime holi_date = Convert.ToDateTime(date);
while (dtstart <= holi_date)
{
if (dtstart.DayOfWeek == DayOfWeek.Monday)
{
devmontxt.Text = holiday;
devmontxt.Enabled = false;
trmontxt.Text = holiday;
trmontxt.Enabled = false;
lunmontxt.Text = holiday;
lunmontxt.Enabled = false;
permontxt.Text = holiday;
permontxt.Enabled = false;
totmontxt.Text = holiday;
totmontxt.Enabled = false;

}
if (dtstart.DayOfWeek == DayOfWeek.Tuesday)
{

devtuetxt.Text = holiday;
devtuetxt.Enabled = false;
trtuetxt.Text = holiday;
trtuetxt.Enabled = false;
luntuetxt.Text = holiday;
luntuetxt.Enabled = false;
pertuetxt.Text = holiday;
pertuetxt.Enabled = false;
tottuetxt.Text = holiday;
tottuetxt.Enabled = false;
}
if (dtstart.DayOfWeek == DayOfWeek.Wednesday)
{

devwedtxt.Text = holiday;
devwedtxt.Enabled = false;
trwedtxt.Text = holiday;
trwedtxt.Enabled = false;
lunwedtxt.Text = holiday;
lunwedtxt.Enabled = false;
perwedtxt.Text = holiday;
perwedtxt.Enabled = false;
totwedtxt.Text = holiday;
totwedtxt.Enabled = false;
}
if (dtstart.DayOfWeek == DayOfWeek.Thursday)
{
devthutxt.Text = holiday;
devthutxt.Enabled = false;
trthutxt.Text = holiday;
trthutxt.Enabled = false;
lunthutxt.Text = holiday;
lunthutxt.Enabled = false;
perthutxt.Text = holiday;
perthutxt.Enabled = false;
totthutxt.Text = holiday;
totthutxt.Enabled = false;

}

if (dtstart.DayOfWeek == DayOfWeek.Friday)
{
devfritxt.Text = holiday;
devfritxt.Enabled = false;
trfritxt.Text = holiday;
trfritxt.Enabled = false;
lunfritxt.Text = holiday;
lunfritxt.Enabled = false;
perfritxt.Text = holiday;
perfritxt.Enabled = false;
totfritxt.Text = holiday;
totfritxt.Enabled = false;
}
if (dtstart.DayOfWeek == DayOfWeek.Saturday)
{
devsattxt.Text = holiday;
devsattxt.Enabled = false;
trsattxt.Text = holiday;
trsattxt.Enabled = false;
lunsattxt.Text = holiday;
lunsattxt.Enabled = false;
persattxt.Text = holiday;
persattxt.Enabled = false;
totsattxt.Text = holiday;
totsattxt.Enabled = false;

}
dtstart = dtstart.AddDays(1);
continue;
}
}
dr1.Close();
con.Close();

最佳答案

您需要找到一周中的最后一天。

lastDay = dtstart.AddDays(7);

现在,由于您同时拥有开始日期和结束日期,因此您只能查询该周的假期。

select * from ind_holidays where holiday_day between @dtstart and @lastDay order by holiday_day

查询返回的第一个元素将是一周中的第一个假期。

另一种选择是获取所有假期并将它们存储在列表中。然后你只需要循环列表中的项目。

关于c# - 循环一周的日期,直到在该周内找到假期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com