在C#中添加时间到date时间

我有一个日历和一个包含一天中的时间的文本框。 我想创build一个两者结合的date时间。 我知道我可以通过查看小时和分钟,然后将它们添加到日历date时间,但这似乎相当混乱。

有没有更好的办法?

您可以使用DateTime.Add ()方法将时间添加到date。

DateTime date = DateTime.Now; TimeSpan time = new TimeSpan(36, 0, 0, 0); DateTime combined = date.Add(time); Console.WriteLine("{0:dddd}", combined); 

你也可以通过parsing一个string来创build你的时间跨度,如果这是你需要做的。

另外,你可以看看使用其他控件。 你没有提到你是否使用winforms,wpf或asp.net,但有多种date和时间select器控件,支持selectdate和时间。

如果您使用两个DateTime对象,一个用于存储另一个时间的date,则可以执行以下操作:

 var date = new DateTime(2016,6,28); var time = new DateTime(1,1,1,13,13,13); var combinedDateTime = date.AddTicks(time.TimeOfDay.Ticks); 

这个例子可以在这里find

根据您在文本框中inputdate的格式(并validation!),您可以这样做:

 TimeSpan time; if (TimeSpan.TryParse(textboxTime.Text, out time)) { // calendarDate is the DateTime value of the calendar control calendarDate = calendarDate.Add(time); } else { // notify user about wrong date format } 

请注意, TimeSpan.TryParse希望string处于'hh:mm'格式(可选秒)。

使用https://github.com/FluentDateTime/FluentDateTime

 DateTime dateTime = DateTime.Now; DateTime combined = dateTime + 36.Hours(); Console.WriteLine(combined); 

结合两者。 Date-Time-Picker也支持拾取时间。

你只需要改变Format-Property和CustomFormat-Property。

  DateTime newDateTime = dtReceived.Value.Date.Add(TimeSpan.Parse(dtReceivedTime.Value.ToShortTimeString()));