【发布时间】:2023-03-23 23:26:01
【问题描述】:
当用户添加课程时,他们会选择课程的开始日期和结束日期。我已经能够计算结束日期和开始日期之间的值。我能够创建一个 For 循环,为班级所在的每一天在班级表中插入一行。例如 01/03/17 - 05/03/17 运行 5 天,因此它在 Class 表中添加了 5 行。
目前,它在开始日期中添加的每一行作为 01/03/2017 00:00:00 和结束日期 05/03/2017 00:00:00。
对于每一行,我想将日期递增 1,直到到达结束日期
例如:
01/03/2017 00:00:00
02/03/2017 00:00:00
03/03/2017 00:00:00
04/03/2017 00:00:00
05/03/2017 00:00:00
下面是我的 For 循环代码:
public class UpdateTimetable
{
internal void insert_days(int moduledata, int? recurrencedata, DateTime startdatedata, DateTime enddatedata, int classtypedata, int roomcodedata, int starttimedata, int endtimedata, string totalday)
{
int tdays = Convert.ToInt16(totalday);
for (int i = 1; i <= tdays; i++)
{
string connectionString = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
SqlConnection myConnection = new SqlConnection(connectionString);
myConnection.Open();
string query = "INSERT INTO Class (ModuleId, ClassTypeId, ClassScheduleStartTimeId, ClassScheduleEndTimeId, RoomCodeId, StartTime, EndTime, RecurrenceId) VALUES (@moduledata, @classtypedata, @starttimedata, @endtimedata, @roomcodedata, @startdatedata, @enddatedata, @recurrencedata)";
SqlCommand myCommand = new SqlCommand(query, myConnection);
//myCommand.Parameters.AddWithValue("@daydata", DayId);
myCommand.Parameters.AddWithValue("@moduledata", moduledata);
myCommand.Parameters.AddWithValue("@classtypedata", classtypedata);
myCommand.Parameters.AddWithValue("@startdatedata", startdatedata);
myCommand.Parameters.AddWithValue("@enddatedata", enddatedata);
myCommand.Parameters.AddWithValue("@roomcodedata", roomcodedata);
myCommand.Parameters.AddWithValue("@starttimedata", starttimedata);
myCommand.Parameters.AddWithValue("@endtimedata", endtimedata);
myCommand.Parameters.AddWithValue("@recurrencedata", recurrencedata);
myCommand.ExecuteReader();
myConnection.Close();
}
}
}
这是我计算开始日期和结束日期之间总天数的代码。
int moduledata = Convert.ToInt32(ddlModule.Text);
DateTime startdatedata = Convert.ToDateTime(txtstartdate.Text);
DateTime enddatedata = Convert.ToDateTime(txtenddate.Text);
int classtypedata = Convert.ToInt32(ddlClassType.Text);
int roomcodedata = Convert.ToInt32(ddlRoomCode.Text);
int starttimedata = Convert.ToInt32(ddlStartClassTime.Text);
int endtimedata = Convert.ToInt32(ddlEndClassTime.Text);
startdatedata = DateTime.Parse(txtstartdate.Text).Date;
enddatedata = DateTime.Parse(txtenddate.Text).Date;
TimeSpan totaldays = enddatedata - startdatedata;
// This is rounding the TimeSpan to the day value only
string totalday = ((int)Math.Round(totaldays.TotalDays, MidpointRounding.AwayFromZero)).ToString();
public class UpdateTimetable
{
internal void insert_days(int moduledata, int? recurrencedata, DateTime startdatedata, DateTime enddatedata, int classtypedata, int roomcodedata, int starttimedata, int endtimedata, string totalday)
{
int tdays = Convert.ToInt16(totalday);
DateTime startDate = DateTime.Now.AddDays(tdays);
DateTime endDate = enddatedata;
List<string> Dates = new List<string>();
for (int i = 1; i <= endDate.Subtract(startDate).Days; i++)
{
Dates.Add(startDate.AddDays(i).ToString());
string connectionString = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
SqlConnection myConnection = new SqlConnection(connectionString);
myConnection.Open();
string query = "INSERT INTO Class (ModuleId, ClassTypeId, ClassScheduleStartTimeId, ClassScheduleEndTimeId, RoomCodeId, StartTime, EndTime, RecurrenceId) VALUES (@moduledata, @classtypedata, @starttimedata, @endtimedata, @roomcodedata, @startdatedata, @enddatedata, @recurrencedata)";
SqlCommand myCommand = new SqlCommand(query, myConnection);
//myCommand.Parameters.AddWithValue("@daydata", DayId);
myCommand.Parameters.AddWithValue("@moduledata", moduledata);
myCommand.Parameters.AddWithValue("@classtypedata", classtypedata);
myCommand.Parameters.AddWithValue("@startdatedata", startdatedata);
myCommand.Parameters.AddWithValue("@enddatedata", enddatedata);
myCommand.Parameters.AddWithValue("@roomcodedata", roomcodedata);
myCommand.Parameters.AddWithValue("@starttimedata", starttimedata);
myCommand.Parameters.AddWithValue("@endtimedata", endtimedata);
myCommand.Parameters.AddWithValue("@recurrencedata", recurrencedata);
myCommand.ExecuteReader();
myConnection.Close();
}
}
}
【问题讨论】:
-
您的具体问题/问题是什么?你在找
DateTime.AddDays吗? -
我添加了一张图片,说明我希望如何在结束日期内每天保存新行
-
图片太多
标签: c# sql-server date for-loop