C# 合并日期和时间到日期时间:输入字符串的格式不正确
我是MVC的新手,我遇到了一个问题,并且已经花了很多时间在这个问题上。希望你能帮助我 我想将[datetime]dateFrom和[timespan]timeFrom合并为[datetime]dtFrom。我必须将它们分开的原因是因为我想创建日期日历和时间选择器来提取日期和时间 现在我正在使用MS SQL Server,我可以毫无问题地保存dateFrom和timeFrom 如何合并dateFrom和timeFrom并保存在dtFrom中 这是我的数据库实体C# 合并日期和时间到日期时间:输入字符串的格式不正确,c#,parsing,datetime,merge,timespan,C#,Parsing,Datetime,Merge,Timespan,我是MVC的新手,我遇到了一个问题,并且已经花了很多时间在这个问题上。希望你能帮助我 我想将[datetime]dateFrom和[timespan]timeFrom合并为[datetime]dtFrom。我必须将它们分开的原因是因为我想创建日期日历和时间选择器来提取日期和时间 现在我正在使用MS SQL Server,我可以毫无问题地保存dateFrom和timeFrom 如何合并dateFrom和timeFrom并保存在dtFrom中 这是我的数据库实体 [Table("DaylightSa
[Table("DaylightSavingsDate")]
公共课日光节
{
[Column("iTimeZoneId")]
[Key]
[ForeignKey("Timezone")]
public virtual short TimeZoneId { get; set; }
[Column("dtFrom")]
public virtual DateTime? dtFrom { get; set; }
[Column("dtTo")]
public virtual DateTime? dtTo { get; set; }
[Column("DateFrom")]
[DataType(DataType.Date)]
public virtual DateTime dateFrom { get; set; }
[Column("TimeFrom")]
[DataType(DataType.Time)]
public virtual TimeSpan timeFrom { get; set; }
[Column("DateTo")]
[DataType(DataType.Date)]
public virtual DateTime dateTo { get; set; }
[Column("TimeTo")]
[DataType(DataType.Time)]
public virtual TimeSpan timeTo { get; set; }
public virtual STTimeZone Timezone { get; set; }
}
这是我的控制器中的编辑操作
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "TimeZoneId,dtFrom,dtTo,dateFrom,dateTo,timeFrom,timeTo")] DaylightSavingsDate daylightsavingsdate)
{
if (ModelState.IsValid)
{
var dateFrom = daylightsavingsdate.dateFrom;
var timeFrom = daylightsavingsdate.timeFrom;
var dtFrom = daylightsavingsdate.dtFrom;
dtFrom = DateTime.Parse(dateFrom.ToString("yyyy-MM-dd ") + (timeFrom.ToString("hh:mm:ss")));
globalDb.Save(daylightsavingsdate);
return RedirectToAction("Index");
}
ViewBag.TimeZoneId = new SelectList(globalDb.TimeZones, "Id", "Name", daylightsavingsdate.TimeZoneId);
return View(daylightsavingsdate);
}
因此,我尝试解析dateFrom和timeFrom to DateTime以保存在dtFrom中,但错误显示:
输入字符串的格式不正确
有人能告诉我怎么解决这个问题吗?非常感谢 如果可以的话,将解析和格式化从图片中删除。您已经有了DateTime对象和TimeSpan对象。如果加载的日期没有时间,那么它的时间是午夜零。所以只要加上时间跨度,你就完成了
DateTime dateFrom = new DateTime(2014,1,1);
TimeSpan timeFrom = new TimeSpan(1,0,0);
DateTime dtFrom = dateFrom + timeFrom;
Console.WriteLine(dateFrom);
Console.WriteLine(timeFrom);
Console.WriteLine(dtFrom);
输出:
2014年1月1日12:00:00上午
01:00:00
2014年1月1日凌晨1:00:00
旁白-为什么要构建类来为表提供时区/夏令时数据?您应该改为使用或更好-。谢谢您的回答。现在我可以获得2014-01-01 00:00:00.000的dateFrom和00:01:00的timeFrom,但我仍然无法将它们合并到2014-01-01 00:01:00。在MS SQL server中,我可以通过以下方式合并它们:选择CASTdateFrom as DATETIME+CASTtimeFrom as TIME as dtFrom from DaylightSavingsDate。但我不知道如何在我的MVC项目中合并它们并另存为dtFrom?我已经尝试在控制器和保存方法中添加代码,但仍然无法工作。我不确定您的意思。代码非常清楚。只需将timespan添加到datetime。它起作用了。你试过了吗?是的,我试过了。我添加了dtFrom=dateFrom+timeFrom;在我的代码中,但它们仍然没有合并到dtFrom