我正在开发一个应用程序以充当待办事项列表,我想知道如何从日期时间框接受值,但只使用日期值或时间值。我现在正在这样做。
DateTime ted = appointmentDateTimeDate.Value; //The date
DateTime at = appointmentDateTimeTime.Value; //The time
我应该这样做吗?
答案 0 :(得分:5)
将DateTime.Date
属性用于日期,将DateTime.TimeOfDay
用于时间:
DateTime ted = appointmentDateTimeDate.Date; //The date
TimeSpan at = appointmentDateTimeTime.TimeOfDay; //The time
答案 1 :(得分:1)
BCL并没有很好地分开日期和时间。
如果您乐意接受新的外部依赖关系,我想插入我的Noda Time库,这样您就可以清楚地将内容分成LocalDate
和{{ 1}}。要从日期/时间选择器执行转换,您可能会使用:
LocalTime
答案 2 :(得分:0)
DateTime值始终包含日期和时间,无论您是否同时使用。
您可以使用DateTime的。Date属性来获取“只是日期”。它仍然有时间值,但时间值将是午夜。您还可以使用。TimeOfDay属性来获取时间部分,该部分将是TimeSpan,表示自午夜以来的刻度数。
我在这里进行了一次飞跃,并假设您尝试使用一个控件设置日期,并在UI中设置另一个控件的时间。以下是我们使用附加到文本框和a custom TimePicker control的Ajax CalendarExtender执行此操作的一些代码示例。
DateTime dt;
try
{
dt = Convert.ToDateTime(txtViewDate.Text).AddHours(txtViewTime.Hour).AddMinutes(txtViewTime.Minute);
if (txtViewTime.AmPm == MKB.TimePicker.TimeSelector.AmPmSpec.PM)
{
dt = dt.AddHours(12);
}
System.Diagnostics.Debug.WriteLine(dt.ToString());
}
catch (Exception)
{
// abort processing
return;
}
答案 3 :(得分:0)
与其他人指出的一样,DateTime
始终同时具有日期和时间组件。因此,虽然可以使用两个DateTime
独立保存两者,但在大多数情况下,建议将它们一起保存在一个DateTime
实例中。
你应该看看你是否真的需要分开这两个值,或者你的应用程序是否可以将它们组合在一个属性中,这将使事情变得更容易。