DateTimePicker:同时选择日期和时间


143

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

Answers:


187

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

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

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

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


16
24小时制:“ dd MM yyyy HH mm ss”。我猜开发人员必须关心本地化(不同国家的日期/时间格式不同)。来自奥地利的问候。
hfrmobile 2013年

6
@hfrmobile-您还可以使用System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePatternSystem.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern获取当前区域性的格式。MSDN链接
Wai Ha Lee

1
同意@WaiHaLee: Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " " + time 您也可以手动限制时间部分: Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " HH:mm"
SteveCinq

我使用了此方法,但我将CustomFormat放在了选择器属性中,而不是使用代码
瞎眼的Skwirl

67

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

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

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

两个日期时间选择器

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

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

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

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

1
是否可以将分钟频率增加到30分钟?用户何时单击向上或向下按钮?
FaizanHussainRabbani '16

好答案!我进行了自定义UserControl,以便在项目中多次重复使用它。
mpasko256

谢谢你的建议。有两个不同的日期和时间控件是有意义的。
Najeeb

45

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

要将DateTimePicker用于时间,请将Format属性设置为Time或Custom(如果要使用CustomFormat属性控制时间的格式,请使用Custom)。然后将ShowUpDown属性设置为true。

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


24

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

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

你可以玩不同的组合为格式说明,以满足您的需要如MMMM将给予“ 八月 ”,而MM将给予“ 八月


“ DateTime Picker可用于同时选择日期和时间,这就是为什么它被称为“ Date and Time Picker”。-除了不能,这就是为什么要问这个问题。
Derf Skren

确实,这种控制非常令人沮丧。我花了一个下午的时间调试代码,直到意识到该死的东西将返回一个代表用户编辑的日期时间的值,但不能同时返回两者。我必须说明:控件如何显示有效的用户编辑日期和时间(我的自定义格式为yyyy-MM-dd HH:mm),然后返回一个仅反映部分显示日期和时间的值。我将其称为错误,但它已经存在了数十年……
EBlake

16

转至PropertiesdateTimePicker在Visual Studio和集FormatCustom。在下面CustomFormat输入您的格式。就我而言MMMMdd, yyyy | hh:mm

在此处输入图片说明
dateTimePickerProperties


他没有问如何在DateTimePicker上格式化/显示时间。他在问如何让它选择时间(因此命名为DateTimePicker,可能会假定控件也可以用来选择时间)
nivs1978

这应该是正确的答案。像魅力一样
运作

1

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


1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.