DateTimePicker: выберите дату и время


143

Можно ли использовать DateTimePicker (Winforms), чтобы выбрать дату и время (в раскрывающемся списке)? Как изменить пользовательское отображение выбранного значения? Кроме того, возможно ли разрешить пользователю вводить дату / время вручную?

Ответы:


187

Установите для параметра «Формат» значение «Пользовательский» и укажите формат:

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

или как вы хотите выложить это. Затем вы можете ввести непосредственно дату / время. Если вы используете MMM, вам нужно будет использовать числовое значение месяца для ввода, если вы сами не напишите какой-то код для этого (например, 5 результатов в мае)

Не знаю о сборщике для даты и времени вместе. Похоже, пользовательский контроль.


16
24-часовые часы: "дд мм гггг чч мм сс". Я предполагаю, что разработчик должен заботиться о локализации (различный формат даты / времени в разных странах). Привет из Австрии.
hfrmobile

6
@hfrmobile - вы также можете использовать System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePatternи System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePatternполучить формат для текущей культуры. Ссылка MSDN
Вай Ха Ли

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

Лучше всего использовать два 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

Отличный ответ! Я сделал пользовательский UserControl, чтобы многократно использовать его в своем проекте.
mpasko256

Спасибо за предложение. Имеет смысл иметь два разных элемента управления для даты и времени.
Наджиб

45

К сожалению, это один из многих неправильных символов в структуре, или, в лучшем случае, нарушение SRP.

Чтобы использовать DateTimePicker для времени, установите для свойства «Формат» значение «Время» или «Пользовательский» (используйте «Пользовательский», если хотите контролировать формат времени с помощью свойства «CustomFormat»). Затем установите для свойства ShowUpDown значение true.

Хотя пользователь может установить дату и время вместе вручную, он не может использовать графический интерфейс для установки обоих.


24

DateTime Picker может использоваться для выбора даты и времени, поэтому он называется «Date and Time Picker». Вы можете установить для свойства « Формат » значение « Пользовательский » и задать комбинацию различных спецификаторов формата для представления / выбора даты / времени в разных форматах в свойстве « Пользовательский формат ». Однако, если вы хотите изменить дату, то можно использовать всплывающий календарь, тогда как в случае выбора времени (в том же элементе управления вы обязаны использовать клавиши вверх / вниз для изменения значений).

Например, пользовательский формат « ддддд, мммм дд, гггг чч: мм: сс тт » даст вам такой результат: « четверг, 20 августа 2009 г. 02:55:23 вечера ».

Вы можете поиграть с различными комбинациями для спецификаторов формата в соответствии с вашими потребностями, например, MMMM даст « август », тогда как MM даст « август »


«DateTime Picker может использоваться для выбора даты и времени, поэтому он называется« Date and Time Picker ».» - кроме того, что не может, поэтому был задан вопрос.
Дерф Скрен

Действительно, этот контроль очень расстраивает. Я просто потратил отладочный код во второй половине дня, пока не понял, что проклятая вещь вернет значение, которое представляет отредактированную пользователем дату ИЛИ время, но не оба. Я должен сказать: как элемент управления может отображать действительную отредактированную пользователем дату и время (мой собственный формат yyyy-MM-dd HH:mm), а затем возвращать значение, которое отражает только часть отображаемых даты и времени. Я бы назвал это ошибкой, но она была там десятилетиями ...
EBlake

16

Перейдите в Propertiesсвой dateTimePickerVisual Studio и установите Formatдля Custom. Под CustomFormatвведите свой формат. В моем случае я использовалMMMMdd, yyyy | hh:mm

введите описание изображения здесь
dateTimePickerProperties


Он не спрашивает, как отформатировать / отобразить время на DateTimePicker. Он спрашивает, как заставить его выбирать время (отсюда и название DateTimePicker, можно предположить, что элемент управления также можно использовать для выбора времени)
nivs1978

Это должен быть правильный ответ. Работал как шарм
KingMak

1

Вы можете получить его для отображения времени . Исходя из этого, вам, вероятно, придется иметь два элемента управления (одно свидание, один раз), чтобы выполнить то, что вы хотите.


1

Я боюсь, что элемент управления DateTimePicker не способен делать такие вещи. Это довольно простой (и разочаровывающий!) Контроль. Лучшим вариантом может быть поиск стороннего элемента управления, который делает то, что вы хотите.

Для варианта ввода даты и времени вручную можно создать пользовательский компонент с комбинацией TextBox / DateTimePicker, чтобы выполнить это, и он может работать достаточно хорошо, если сторонние элементы управления не предусмотрены.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.