我有一个日历和一个包含一天中某个时间的文本框。我想创建一个日期时间,它是两者的组合。我知道我可以通过查看小时和分钟然后将这些添加到日历DateTime来实现,但这看起来相当混乱。
有更好的方法吗?
答案 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。