【发布时间】:2018-10-29 08:57:37
【问题描述】:
我必须创建一个实时报告。为此,我必须为给定一天中的每个小时编写条件。在下面的代码中,条件检查星期几,然后检查当前时间,并根据该时间生成报告。
protected void sample()
{
TimeSpan zerothHour = new TimeSpan(00, 0, 0);
TimeSpan firstHour = new TimeSpan(01, 0, 0);
TimeSpan secondHour = new TimeSpan(02, 0, 0);
TimeSpan thirdHour = new TimeSpan(03, 0, 0);
TimeSpan fourthHour = new TimeSpan(04, 0, 0);
TimeSpan fifthHour = new TimeSpan(05, 0, 0);
TimeSpan sixthHour = new TimeSpan(06, 0, 0);
// and so on until the twentyfourth hour
if (DateTime.Today.DayOfWeek == DayOfWeek.Monday)
{
if (DateTime.Now.TimeOfDay >= sixthHour && DateTime.Now.TimeOfDay <= seventhHour)
{
//MySql query here
string MyConString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
MySqlConnection connection = new MySqlConnection(MyConString);
string agentlogin = "SELECT agentlogin FROM agentdetails WHERE location = 'PNQ10-Pune' AND shift IN('6:00-15-00', '22:00-7:00') AND Mon = 'W'";
MySqlCommand cmd = new MySqlCommand(agentlogin, connection);
connection.Open();
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
//lblagentlogin.Text += rdr["agentlogin"] + Environment.NewLine;
sqlList.Add(Convert.ToString(rdr["agentlogin"]));
}
}
else if(DateTime.Now.TimeOfDay >= seventhHour && DateTime.Now.TimeOfDay <= eigthHour)
{
}
else if (DateTime.Now.TimeOfDay >= eigthHour && DateTime.Now.TimeOfDay <= ninthHour)
{
}
else if (DateTime.Now.TimeOfDay >= ninthHour && DateTime.Now.TimeOfDay <= tenthHour)
{
}
else if (DateTime.Now.TimeOfDay >= tenthHour && DateTime.Now.TimeOfDay <= eleventhHour)
{
}
// and so on for the entire cycle of time
}
}
上面的代码只适用于星期一,我也必须在一周的其他六天做同样的事情。当我在每个条件中添加查询时,它会像数百行一样。
有没有更好的方法来完成这项工作而无需编写数百行代码?
【问题讨论】:
-
for循环呢?或者使用 Quartz 之类的东西进行任务调度? -
OT
DateTime.Today.TimeOfDay <= seventhHour你想使用<而不是<= -
你也可以使用函数来简化这个任务。
-
您确定这是正确的方法吗?您的 MySQL 查询如何因时间而异?
-
@Enigmativity 好的,我已经回滚了更改,感谢您让我知道 :)