DateTimePicker: виберіть дату та час


143

Чи можна використовувати DateTimePicker (Winforms) для вибору дати та часу (у спадному меню)? Як змінити спеціальне відображення вибраного значення? Також, чи можна дозволити користувачеві вводити дату / час вручну?

Відповіді:


187

Встановіть "Формат" у "Спеціальний" та вкажіть формат:

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

або хоч ви хочете викласти його. Потім ви можете ввести безпосередньо дату / час. Якщо ви використовуєте MMM, вам потрібно буде використовувати числове значення для місяця для введення, якщо тільки ви не напишете для цього якийсь код (наприклад, 5 результатів у травні)

Не знайте про вибірку для дати та часу разом. Мені це звучить як власний контроль.


16
Цілодобовий годинник: "dd MM yyyy HH mm ss". Я думаю, розробник має піклуватися про локалізацію (різний формат дати / часу в різних країнах). Привітання з Австрії.
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

Найкраще використовувати два DateTimePickers для завдання. Один буде за замовчуванням для розділу дати, а другий 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

На жаль, це одна з багатьох помилок в рамках, або в кращому випадку порушення СРП.

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

Хоча користувач може встановити дату та час разом вручну, він не може використовувати GUI для встановлення обох.


24

DateTime Picker можна використовувати для вибору дати та часу, тому його називають "Вибір дати та часу". Ви можете встановити властивість " Формат " на " Спеціальний " та встановити комбінацію різних специфікаторів формату для представлення / вибору дати / часу в різних форматах у " Спеціальний формат" властивості ". Однак якщо ви хочете змінити дату, то спливаючий календар можна використовувати, тоді як у разі вибору часу (у тому ж контролі ви зобов'язані використовувати клавіші вгору / вниз для зміни значень.

Наприклад, нестандартний формат " ddddd, MMMM dd, yyyy hh: mm: ss tt " дасть вам такий результат: " 20 серпня 2009 02:55:23 PM ".

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


"DateTime Picker можна використовувати для вибору дати та часу, тому його називають" Вибір дати та часу "." - за винятком того, що він не може, через що було задано питання.
Derf Skren

Дійсно, цей контроль дуже засмучує. Я просто провів післяобідню програму налагодження коду, поки не зрозумів, що чортова річ поверне значення, що представляє відредаговану користувачем дату АБО час, але не обидва. Мені потрібно вивірити: як управління може відображати дійсні дату та час, відредаговані користувачем (мій спеціальний формат yyyy-MM-dd HH:mm), а потім повертати значення, яке відображає лише частину відображених дати та часу. Я б назвав це помилкою, але він там десятиліттями ...
EBlake

16

Перейдіть до своєї Propertiesпрограми dateTimePickerу Visual 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.