在C#中为DateTime添加时间

时间:2010-01-27 11:08:33

标签: c# datetime

我有一个日历和一个包含一天中某个时间的文本框。我想创建一个日期时间,它是两者的组合。我知道我可以通过查看小时和分钟然后将这些添加到日历DateTime来实现,但这看起来相当混乱。

有更好的方法吗?

6 个答案:

答案 0 :(得分:91)

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

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

如果您需要这样做,也可以按parsing a String创建时间跨度。

或者,您可以查看使用其他控件。你没有提到你是否使用winforms,wpf或asp.net,但是有各种日期和时间选择器控件支持选择日期和时间。

答案 1 :(得分:8)

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

var date = new DateTime(2016,6,28);

var time = new DateTime(1,1,1,13,13,13);

var combinedDateTime = date.AddTicks(time.TimeOfDay.Ticks);

可以找到here

的示例

答案 2 :(得分:3)

根据您格式化(并验证!)在文本框中输入的日期的方式,您可以执行以下操作:

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要求字符串采用'hh:mm'格式(可选秒)。

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

结合两者。 Date-Time-Picker也支持选择时间。

您只需要更改Format-Property和CustomFormat-Property。