DateTimePicker:日付と時刻の両方を選択します


143

DateTimePicker(Winforms)を使用して(ドロップダウンで)日付と時刻の両方を選択することは可能ですか?選択した値のカスタム表示をどのように変更しますか?また、ユーザーが日付/時刻を手動で入力できるようにすることは可能ですか?

回答:


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.ShortDatePatternおよびSystem.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

ジョブには2つのDateTimePickerを使用することをお勧めします。1つは日付セクションのデフォルトで、2番目のDateTimePickerは時間部分です。2番目のDateTimePickerを次のようにフォーマットします。

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

2つをキャプチャすると、次のようになります。

2つの日時ピッカー

これらの両方のコントロールからDateTimeを取得するには、次のコードを使用します

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

DateTimeをこれらの両方のコントロールに割り当てるには、次のコードを使用します

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

1
分の頻度を30分に増やす可能性はありますか?ユーザーが上または下ボタンをクリックしたとき?
FaizanHussainRabbani 2016年

正解です。プロジェクトで何度も再利用できるように、カスタムのUserControlを作成しました。
mpasko256 2017

提案をありがとう。日付と時刻に2つの異なるコントロールを使用することは理にかなっています。
Najeeb

45

残念ながら、これはフレームワークの多くの誤称の1つであり、せいぜいSRPの違反です。

時間にDateTimePickerを使用するには、FormatプロパティをTimeまたはCustomに設定します(CustomFormatプロパティを使用して時間の形式を制御する場合は、Customを使用します)。次に、ShowUpDownプロパティをtrueに設定します。

ユーザーは日付と時刻を一緒に手動で設定できますが、GUIを使用して両方を設定することはできません。


24

DateTime Pickerは、日付と時刻の両方を選択するために使用できるため、「Date and Time Picker」と呼ばれます。「Format」プロパティを「Custom」に設定し、異なるフォーマット指定子の組み合わせを設定して、「Custom Format」で異なるフォーマットで日付/時刻を表す/選択することができます」プロパティます。ただし、日付を変更する場合はポップアップカレンダーを使用できますが、時間選択の場合は(同じコントロールで上下キーを使用して値を変更する必要があります)。

たとえば、カスタムフォーマット " ddddd、MMMM dd、yyyy hh:mm:ss tt "は、 " 2009年8月20日木曜日02:55:23 PM "のような結果を返します。

あなたの必要性などに合わせて書式指定子のためのさまざまな組み合わせで遊ぶことができますMMMM「を与えるだろう8月のに対し、」MMは「与える8月に


「DateTime Pickerは、日付と時刻の両方を選択するために使用できるため、「Date and Time Picker」と呼ばれています。」-それができないことを除いて、質問が尋ねられた理由です。
Derf Skren、2015

実際、このコントロールは非常にイライラします。私が午後のデバッグコードを費やしたのは、ユーザーが編集した日付または時刻ではなく両方を表す値が返されることに気づくまでです。ユーザーが編集した有効な日付と時刻(カスタム形式はyyyy-MM-dd HH:mm)をコントロールが表示し、表示された日付と時刻の一部のみを反映する値を返すにはどうすればよいですか。私はそれをバグと呼びますが、それは何十年もの間存在しています...
EBlake

16

Visual Studioのに移動し、PropertiesdateTimePicker設定FormatCustomます。以下の下では、CustomFormatあなたの形式を入力します。私の場合、私はMMMMdd, yyyy | hh:mm

ここに画像の説明を入力してください
dateTimePickerProperties


彼はDateTimePickerで時間をフォーマット/表示する方法を尋ねていません。彼は時間を選択する方法を尋ねています(そのため、DateTimePickerという名前です。コントロールを使用して時間を選択することもできると
思います

これが正解です。魅力のように働きました
KingMak

1

時間を表示させることができます。そのため、おそらく2つのコントロール(1つの日付と1つの時間)を使用して、目的の機能を実現する必要があります。


1

申し訳ありませんが、DateTimePickerコントロールにはそれらの機能を実行する機能がありません。これはかなり基本的な(そしてイライラする!)コントロールです。あなたの最善のオプションは、あなたが望むことをするサードパーティのコントロールを見つけることかもしれません。

日付と時刻を手動で入力するオプションについては、TextBox / DateTimePickerの組み合わせを使用してカスタムコンポーネントを作成し、これを実現できます。サードパーティのコントロールがオプションでない場合は、適切に機能する可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.