关于c#:DateTimePicker:同时选择日期和时间

DateTimePicker: pick both date and time

是否可以使用DateTimePicker(Winforms)同时选择日期和时间(在下拉列表中)? 如何更改选择值的自定义显示? 另外,是否可以使用户手动键入日期/时间?


将格式设置为自定义,然后指定格式:

1
2
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat ="MM/dd/yyyy hh:mm:ss";

或者您想布置它。然后,您可以直接输入日期/时间。如果您使用MMM,则需要使用输入月份的数值,除非您自己为此编写了一些代码(例如,5月份有5个结果)

不知道日期和时间的选择器。听起来对我来说是自定义控件。


最好为作业使用两个DateTimePickers
一个将是日期部分的默认值,第二个DateTimePicker是时间部分。格式化第二个DateTimePicker,如下所示。

1
2
      timePortionDateTimePicker.Format = DateTimePickerFormat.Time;
      timePortionDateTimePicker.ShowUpDown = true;

捕获它们后,两者应该看起来像这样

Two Date Time Pickers

要从这两个控件获取DateTime,请使用以下代码

1
2
DateTime myDate = datePortionDateTimePicker.Value.Date +
                    timePortionDateTimePicker.Value.TimeOfDay;

要将DateTime分配给这两个控件,请使用以下代码

1
2
datePortionDateTimePicker.Value  = myDate.Date;  
timePortionDateTimePicker.Value  = myDate.TimeOfDay;


不幸的是,这是框架中许多错误的说法之一,或充其量是违反SRP的。

要使用DateTimePicker作为时间,请将Format属性设置为任一Time
或自定义(如果要使用以下方式控制时间格式,请使用"自定义"
CustomFormat属性)。然后将ShowUpDown属性设置为true。

尽管用户可以手动设置日期和时间,但是他们不能使用GUI设置两者。


DateTime Picker可用于同时选择日期和时间,这就是为什么它被称为" Date and Time Picker"。您可以将"格式"属性设置为"自定义",并在"自定义格式"属性中设置不同格式说明符的组合,以不同格式表示/选择日期/时间。但是,如果要更改日期,则可以使用弹出日历,而在选择时间的情况下(在同一控件中,您必然会使用向上/向下键来更改值。

例如,自定义格式" ddddd,MMMM dd,yyyy hh:mm:ss tt"将为您提供如下结果:" 2009年8月20日,星期四,02:55:23 PM"。

您可以根据需要使用不同的格式说明符组合,例如MMMM将给出" August",而MM将给出" Aug"


在Visual Studio中转到dateTimePickerProperties,然后将Format设置为Custom。在CustomFormat下,输入格式。就我而言,我使用了MMMMdd, yyyy | hh:mm

enter image description here
dateTimePickerProperties


恐怕DateTimePicker控件没有能力执行这些操作。这是一个非常基本(令人沮丧的)控件。最好的选择可能是找到可以满足您需求的第三方控件。

对于手动键入日期和时间的选项,您可以使用TextBox / DateTimePicker组合构建一个自定义组件来完成此操作,并且如果没有第三方控件的话,它可能工作得很好。


您可以获取它来显示时间。因此,您可能必须具有两个控件(一个日期,一次)来完成所需的操作。


推荐阅读