在C#中为DateTime添加时间

4im*_*ble 58 c# datetime

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

有没有更好的办法?

Sim*_*ens 96

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

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

您还可以通过解析String来创建时间跨度,如果这是您需要做的.

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


小智 10

如果您使用两个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);
Run Code Online (Sandbox Code Playgroud)

这方面的一个例子可以在这里找到


Tom*_*ort 5

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

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
}
Run Code Online (Sandbox Code Playgroud)

请注意,TimeSpan.TryParse期望字符串采用“hh:mm”格式(可选秒)。