【发布时间】:2017-06-28 17:38:46
【问题描述】:
我有一个日历和一个包含一天中时间的文本框。我想创建一个结合了两者的日期时间。我知道我可以通过查看小时和分钟然后将它们添加到日历 DateTime 来做到这一点,但这似乎相当混乱。
有没有更好的办法?
【问题讨论】:
我有一个日历和一个包含一天中时间的文本框。我想创建一个结合了两者的日期时间。我知道我可以通过查看小时和分钟然后将它们添加到日历 DateTime 来做到这一点,但这似乎相当混乱。
有没有更好的办法?
【问题讨论】:
您可以使用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,但有各种日期和时间选择器控件支持选择日期和时间。
【讨论】:
11:57 pm,这很有效:TimeSpan time = new TimeSpan(23, 57, 00); DateTime date_with_time = mydate.Add(time);
DateTime.UtcNow.AddSeconds(10); // 未来 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);
可以在here找到一个例子
【讨论】:
根据您在文本框中输入日期的格式(和验证!),您可以这样做:
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' 格式(可选秒数)。
【讨论】:
使用https://github.com/FluentDateTime/FluentDateTime
DateTime dateTime = DateTime.Now;
DateTime combined = dateTime + 36.Hours();
Console.WriteLine(combined);
【讨论】:
DateTime newDateTime = dtReceived.Value.Date.Add(TimeSpan.Parse(dtReceivedTime.Value.ToShortTimeString()));
【讨论】:
两者结合。 Date-Time-Picker 也支持选择时间。
您只需要更改 Format-Property,也许还需要更改 CustomFormat-Property。
【讨论】: