采用DateTime值并仅接受时间,反之亦然

时间:2012-04-02 13:34:17

标签: c# datetime

我正在开发一个应用程序以充当待办事项列表,我想知道如何从日期时间框接受值,但只使用日期值或时间值。我现在正在这样做。

DateTime ted = appointmentDateTimeDate.Value; //The date
DateTime at = appointmentDateTimeTime.Value;  //The time

我应该这样做吗?

4 个答案:

答案 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实例中。

你应该看看你是否真的需要分开这两个值,或者你的应用程序是否可以将它们组合在一个属性中,这将使事情变得更容易。