DateTimePicker: Wählen Sie Datum und Uhrzeit aus

143

Ist es möglich, mit DateTimePicker (Winforms) sowohl Datum als auch Uhrzeit auszuwählen (in der Dropdown-Liste)? Wie ändern Sie die benutzerdefinierte Anzeige des ausgewählten Werts? Ist es auch möglich, dem Benutzer die manuelle Eingabe von Datum und Uhrzeit zu ermöglichen?

Grzenio
quelle

Antworten:

187

Setzen Sie das Format auf Benutzerdefiniert und geben Sie dann das Format an:

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

oder wie auch immer Sie es auslegen möchten. Sie können dann Datum und Uhrzeit direkt eingeben. Wenn Sie MMM verwenden, müssen Sie den numerischen Wert für den Monat für die Eingabe verwenden, es sei denn, Sie schreiben selbst Code dafür (z. B. 5 Ergebnisse im Mai).

Ich weiß nichts über den Picker für Datum und Uhrzeit zusammen. Klingt für mich nach einer benutzerdefinierten Steuerung.

itsmatt
quelle
16
24-Stunden-Uhr: "TT MM JJJJ HH MM SS". Ich denke, Entwickler müssen sich um die Lokalisierung kümmern (unterschiedliches Datums- / Zeitformat in verschiedenen Ländern). Grüße aus Österreich.
hfrmobile
6
@hfrmobile - Sie können auch das Format für die aktuelle Kultur verwenden System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePatternund abrufen System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern. MSDN Link
Wai Ha Lee
1
Stimmen Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " " + time Sie mit @WaiHaLee überein: Sie können beispielsweise die Zeitkomponente auch manuell Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " HH:mm"
einschränken
Ich habe dies verwendet, aber ich habe das CustomFormat in die Picker-Eigenschaften eingefügt, anstatt den Code zu verwenden
blind Skwirl
66

Es ist am besten, zwei DateTimePicker für den Job zu verwenden. Einer ist die Standardeinstellung für den Datumsabschnitt und der zweite DateTimePicker für den Zeitabschnitt. Formatieren Sie den zweiten DateTimePicker wie folgt.

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

Die beiden sollten so aussehen, nachdem Sie sie erfasst haben

Zwei Datums- und Uhrzeitauswahl

Verwenden Sie den folgenden Code, um die DateTime von diesen beiden Steuerelementen abzurufen

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

Verwenden Sie den folgenden Code, um diesen beiden Steuerelementen die DateTime zuzuweisen

datePortionDateTimePicker.Value  = myDate.Date;  
timePortionDateTimePicker.Value  = myDate.TimeOfDay; 
Vectoria
quelle
1
Gibt es eine Möglichkeit, die Minutenfrequenz auf 30 Minuten zu erhöhen? Wenn der Benutzer auf die Schaltfläche nach oben oder unten klickt?
FaizanHussainRabbani
Gute Antwort! Ich habe benutzerdefiniertes UserControl erstellt, um es in meinem Projekt viele Male wiederzuverwenden.
mpasko256
Danke für den Vorschlag. Es ist sinnvoll, zwei verschiedene Steuerelemente für Datum und Uhrzeit zu haben.
Najeeb
45

Leider ist dies eine der vielen Fehlbezeichnungen im Framework oder bestenfalls eine Verletzung von SRP.

Um den DateTimePicker für Zeiten zu verwenden, setzen Sie die Format-Eigenschaft entweder auf Time oder Custom (verwenden Sie Custom, wenn Sie das Format der Zeit mithilfe der CustomFormat-Eigenschaft steuern möchten). Setzen Sie dann die ShowUpDown-Eigenschaft auf true.

Obwohl ein Benutzer Datum und Uhrzeit manuell zusammen einstellen kann, kann er nicht über die GUI beide festlegen.

Nescio
quelle
24

DateTime Picker kann verwendet werden, um sowohl Datum als auch Uhrzeit auszuwählen, weshalb es als "Date and Time Picker" bezeichnet wird. Sie können die Eigenschaft " Format " auf " Benutzerdefiniert " setzen und die Kombination verschiedener Formatbezeichner festlegen, um Datum / Uhrzeit in verschiedenen Formaten in der Eigenschaft " Benutzerdefiniertes Format " darzustellen / auszuwählen . Wenn Sie jedoch das Datum ändern möchten, kann der Popup-Kalender verwendet werden, während bei der Zeitauswahl (im selben Steuerelement müssen Sie die Auf- / Ab-Tasten zum Ändern der Werte verwenden.

Ein benutzerdefiniertes Format " TTDDT, MMMM TT, JJJJ HH: MM: SS TT " liefert beispielsweise das folgende Ergebnis: " Donnerstag, 20. August 2009, 14:55:23 Uhr ".

Sie können mit verschiedenen Kombinationen für Formatspezifizierer herumspielen , die Ihren Anforderungen entsprechen, z. B. MMMM gibt " August " an, während MM " Aug " gibt.

dänisch
quelle
"DateTime Picker kann verwendet werden, um sowohl Datum als auch Uhrzeit auszuwählen. Deshalb wird es als 'Date and Time Picker' bezeichnet." - außer dass es nicht kann, weshalb die Frage gestellt wurde.
Derf Skren
In der Tat ist diese Kontrolle sehr frustrierend. Ich habe gerade einen Nachmittag damit verbracht, Code zu debuggen, bis mir klar wurde, dass das verdammte Ding einen Wert zurückgibt, der das vom Benutzer bearbeitete Datum ODER die Uhrzeit darstellt, aber nicht beide. Ich muss entlüften: Wie kann ein Steuerelement ein gültiges vom Benutzer bearbeitetes Datum und eine gültige Uhrzeit anzeigen (mein benutzerdefiniertes Format ist yyyy-MM-dd HH:mm) und dann einen Wert zurückgeben, der nur einen Teil des angezeigten Datums und der angezeigten Uhrzeit widerspiegelt . Ich würde es einen Fehler nennen, aber es ist seit Jahrzehnten da ...
EBlake
16

Gehen Sie zu PropertiesIhrem dateTimePickerin Visual Studio und setzen Sie Formatauf Custom. CustomFormatGeben Sie unter Ihr Format ein. In meinem Fall habe ich verwendetMMMMdd, yyyy | hh:mm

Geben Sie hier die Bildbeschreibung ein
dateTimePickerProperties

Serge Voloshenko
quelle
Er fragt nicht, wie die Uhrzeit auf dem DateTimePicker formatiert / angezeigt werden soll. Er fragt, wie es eine Zeit auswählen soll (daher der Name DateTimePicker, man würde annehmen, dass das Steuerelement auch verwendet werden könnte, um eine Zeit auszuwählen)
auszuwählen nivs1978
Dies sollte die richtige Antwort sein. Arbeitete wie ein Zauber
KingMak
1

Sie können die Zeit anzeigen lassen . Ab diesem Zeitpunkt müssen Sie wahrscheinlich zwei Steuerelemente (ein Datum, ein Mal) haben, um das zu erreichen, was Sie wollen.

Craig
quelle
1

Ich fürchte, das DateTimePicker-Steuerelement ist nicht in der Lage, diese Dinge zu tun. Es ist eine ziemlich einfache (und frustrierende!) Kontrolle. Ihre beste Option ist möglicherweise, ein Steuerelement eines Drittanbieters zu finden, das das tut, was Sie wollen.

Für die Option, Datum und Uhrzeit manuell einzugeben, können Sie eine benutzerdefinierte Komponente mit einer TextBox / DateTimePicker-Kombination erstellen, um dies zu erreichen. Dies funktioniert möglicherweise recht gut, wenn Steuerelemente von Drittanbietern keine Option sind.

Jeffrey L Whitledge
quelle