DateTimePicker: pick both date and time

283,978

Solution 1

Set the Format to Custom and then specify the format:

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

or however you want to lay it out. You could then type in directly the date/time. If you use MMM, you'll need to use the numeric value for the month for entry, unless you write some code yourself for that (e.g., 5 results in May)

Don't know about the picker for date and time together. Sounds like a custom control to me.

Solution 2

It is best to use two DateTimePickers for the Job One will be the default for the date section and the second DateTimePicker is for the time portion. Format the second DateTimePicker as follows.

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

The Two should look like this after you capture them

Two Date Time Pickers

To get the DateTime from both these controls use the following code

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

To assign the DateTime to both these controls use the following code

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

Solution 3

Unfortunately, this is one of the many misnomers in the framework, or at best a violation of SRP.

To use the DateTimePicker for times, set the Format property to either Time or Custom (Use Custom if you want to control the format of the time using the CustomFormat property). Then set the ShowUpDown property to true.

Although a user may set the date and time together manually, they cannot use the GUI to set both.

Solution 4

DateTime Picker can be used to pick both date and time that is why it is called 'Date and Time Picker'. You can set the "Format" property to "Custom" and set combination of different format specifiers to represent/pick date/time in different formats in the "Custom Format" property. However if you want to change Date, then the pop-up calendar can be used whereas in case of Time selection (in the same control you are bound to use up/down keys to change values.

For example a custom format " ddddd, MMMM dd, yyyy hh:mm:ss tt " will give you a result like this : "Thursday, August 20, 2009 02:55:23 PM".

You can play around with different combinations for format specifiers to suit your need e.g MMMM will give "August" whereas MM will give "Aug"

Solution 5

Go to the Properties of your dateTimePickerin Visual Studio and set Format to Custom. Under CustomFormat enter your format. In my case I used MMMMdd, yyyy | hh:mm

enter image description here
dateTimePickerProperties

Share:
283,978

Related videos on Youtube

Grzenio
Author by

Grzenio

Software Engineer at Google

Updated on April 12, 2022

Comments

  • Grzenio
    Grzenio about 2 years

    Is it possible to use DateTimePicker (Winforms) to pick both date and time (in the dropdown)? How do you change the custom display of the picked value? Also, is it possible to enable the user to type the date/time manually?

  • hfrmobile
    hfrmobile over 10 years
    24 hour clock: "dd MM yyyy HH mm ss". I guess developer has to care about localization (different date/time format in different countries). Greetings from Austria.
  • Wai Ha Lee
    Wai Ha Lee over 9 years
    @hfrmobile - you can also use System.Globalization.CultureInfo.CurrentCulture.DateTimeForm‌​at.ShortDatePattern and System.Globalization.CultureInfo.CurrentCulture.DateTimeForm‌​at.ShortTimePattern to get the format for the current culture. MSDN link
  • Derf Skren
    Derf Skren about 9 years
    "DateTime Picker can be used to pick both date and time that is why it is called 'Date and Time Picker'." - except that it can't, which is why the question was asked.
  • FaizanHussainRabbani
    FaizanHussainRabbani about 8 years
    Is there a possibility to increase minutes frequency to 30 mins? When user clicks up or down button?
  • SteveCinq
    SteveCinq about 7 years
    Agree with @WaiHaLee: Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " " + time You also can constrain, say, the time component manually: Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " HH:mm"
  • mpasko256
    mpasko256 almost 7 years
    Great answer! I made custom UserControl to reuse it many times in my project.
  • EBlake
    EBlake almost 7 years
    Indeed, this control is very frustrating. I just spent an afternoon debugging code until I realized that the darn thing will return a value that represents the user-edited date OR time, but not both. I have to vent: how can a control show a valid user-edited date and time (my custom format is yyyy-MM-dd HH:mm) and then return a value that reflects only part of the displayed date and time. I'd call it a bug, but it's been there for decades...
  • Najeeb
    Najeeb about 5 years
    Thanks for the suggestion. Makes sense to have two different controls for date and time.
  • nivs1978
    nivs1978 almost 5 years
    He is not asking how to format/display the time on the DateTimePicker. He is asking how to make it pick a time (hence the name DateTimePicker, one would assume that the control could also be used to pick a time)
  • blind Skwirl
    blind Skwirl over 4 years
    I used this but I put the CustomFormat in the picker properties rather than using code
  • KingMak
    KingMak about 4 years
    This should be the right answer. Worked like a charm