合并日期和时间到日期时间:输入字符串的格式不正确

时间:2014-05-08 20:45:30

标签: c# parsing datetime merge timespan

我是MVC的新手,我遇到了一个问题,已经花了很多时间。希望你能帮助我。

我想将[datetime] dateFrom和[timespan] timeFrom组合到[datetime] dtFrom。我必须将它们分开的原因是因为我想创建日期日历和时间选择器以获取日期和时间。

现在我正在使用MS SQL Server,我可以毫无问题地保存dateFrom和timeFrom。

如何合并dateFrom和timeFrom并保存在dtFrom中?

这是我的数据库实体。

[Table("DaylightSavingsDate")]

公共类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解析为DateTime以保存在dtFrom中,但错误显示: “输入字符串的格式不正确。”

谁能告诉我如何解决这个问题?非常感谢。

1 个答案:

答案 0 :(得分:1)

如果可以,请从图片中解析并格式化。您已有DateTime个对象和TimeSpan个对象。如果没有时间加载日期,则时间为零(午夜)。所以只需添加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);

输出:

1/1/2014 12:00:00 AM
01:00:00
1/1/2014 1:00:00 AM