将日期范围之间的多个值插入数据库
Inserting multiple values between daterange into DB
我有一个表格,它以 mm/dd/yyyy
的格式收集 2 个日期(开始日期和结束日期)
我想从表格中收集这 2 个日期,然后创建这 2 天之间所有日期的列表,然后将它们插入到 mt 数据库中的单独行中。这是我的代码:
if(IsPost){
var bookedFrom = Request.Form["dateFrom"];
var bookedTo = Request.Form["dateTo"];
DateTime dateF = Convert.ToDateTime(bookedFrom);
DateTime dateT = Convert.ToDateTime(bookedTo);
var dates = new List<DateTime>();
for (var dt = dateF; dt <= dateT; dt = dt.AddDays(1))
{
dates.Add(dt);
}
foreach(var dat in dates){
db.Execute("INSERT INTO Property_Availability (PropertyID, BookedDate, BookedNotes, BookedType) VALUES (@0, @1, @2, @3)", rPropertyId, dat, Request.Form["BookedNotes"], Request.Form["BookedType"]);
}
}
但是,当我尝试 post 我的表单时,出现以下错误:
String was not recognized as a valid DateTime.
DateTime dateF = Convert.ToDateTime(bookedFrom);
知道我哪里出错了吗?
谢谢
根据您的例外情况,Request.Form["dateFrom"] 值的格式存在一些问题。
例如,默认语言环境中的日期应该采用 'dd/mm/yyyy' 或类似的格式。
因此,如果您确切知道此参数中的日期格式,最好使用类似的格式
DateTime dateF = DateTime.ParseExact(bookedFrom, "MM/dd/yyyy", CultureInfo.InvariantCulture);
我的 2 美分可以帮助您,还可以考虑使用调试来了解是否传递了哪些值等。
if(IsPost){
DateTime pFrom = new DateTime();
DateTime pTo = new DateTime();
var bookedFrom = Request.Form["dateFrom"];
var bookedTo = Request.Form["dateTo"];
if(DateTime.TryParse(bookedFrom, out pFrom) && DateTime.TryParse(bookedTo, out pTo))
{
DateTime dateF = pFrom;
DateTime dateT = pTo;
var dates = new List<DateTime>();
for (var dt = dateF; dt <= dateT; dt = dt.AddDays(1))
{
dates.Add(dt);
}
foreach(var dat in dates){
db.Execute("INSERT INTO Property_Availability (PropertyID, BookedDate, BookedNotes, BookedType) VALUES (@0, @1, @2, @3)", rPropertyId, dat, Request.Form["BookedNotes"], Request.Form["BookedType"]);
}
}
else
{
Response.Write("<script language=javascript>alert('Invalid date from : " + bookedFrom + " and date to : " + bookedTo + "');</script>");
}
}
我有一个表格,它以 mm/dd/yyyy
的格式收集 2 个日期(开始日期和结束日期)我想从表格中收集这 2 个日期,然后创建这 2 天之间所有日期的列表,然后将它们插入到 mt 数据库中的单独行中。这是我的代码:
if(IsPost){
var bookedFrom = Request.Form["dateFrom"];
var bookedTo = Request.Form["dateTo"];
DateTime dateF = Convert.ToDateTime(bookedFrom);
DateTime dateT = Convert.ToDateTime(bookedTo);
var dates = new List<DateTime>();
for (var dt = dateF; dt <= dateT; dt = dt.AddDays(1))
{
dates.Add(dt);
}
foreach(var dat in dates){
db.Execute("INSERT INTO Property_Availability (PropertyID, BookedDate, BookedNotes, BookedType) VALUES (@0, @1, @2, @3)", rPropertyId, dat, Request.Form["BookedNotes"], Request.Form["BookedType"]);
}
}
但是,当我尝试 post 我的表单时,出现以下错误:
String was not recognized as a valid DateTime. DateTime dateF = Convert.ToDateTime(bookedFrom);
知道我哪里出错了吗?
谢谢
根据您的例外情况,Request.Form["dateFrom"] 值的格式存在一些问题。
例如,默认语言环境中的日期应该采用 'dd/mm/yyyy' 或类似的格式。
因此,如果您确切知道此参数中的日期格式,最好使用类似的格式
DateTime dateF = DateTime.ParseExact(bookedFrom, "MM/dd/yyyy", CultureInfo.InvariantCulture);
我的 2 美分可以帮助您,还可以考虑使用调试来了解是否传递了哪些值等。
if(IsPost){
DateTime pFrom = new DateTime();
DateTime pTo = new DateTime();
var bookedFrom = Request.Form["dateFrom"];
var bookedTo = Request.Form["dateTo"];
if(DateTime.TryParse(bookedFrom, out pFrom) && DateTime.TryParse(bookedTo, out pTo))
{
DateTime dateF = pFrom;
DateTime dateT = pTo;
var dates = new List<DateTime>();
for (var dt = dateF; dt <= dateT; dt = dt.AddDays(1))
{
dates.Add(dt);
}
foreach(var dat in dates){
db.Execute("INSERT INTO Property_Availability (PropertyID, BookedDate, BookedNotes, BookedType) VALUES (@0, @1, @2, @3)", rPropertyId, dat, Request.Form["BookedNotes"], Request.Form["BookedType"]);
}
}
else
{
Response.Write("<script language=javascript>alert('Invalid date from : " + bookedFrom + " and date to : " + bookedTo + "');</script>");
}
}