DateTimePicker: hem tarih hem de saat seç


143

Tarih ve saati seçmek için DateTimePicker (Winforms) kullanılabilir mi (açılır menüden)? Toplanan değerin özel görüntüsünü nasıl değiştirirsiniz? Ayrıca, kullanıcının tarih / saati manuel olarak yazmasını sağlamak mümkün müdür?

Yanıtlar:


187

Biçimi Özel olarak ayarlayın ve ardından biçimi belirtin:

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

ya da bunu düzenlemek istersiniz. Daha sonra doğrudan tarih / saat yazabilirsiniz. MMM kullanıyorsanız, bunun için kendiniz bir kod yazmadıkça (örneğin Mayıs ayında 5 sonuç), giriş için ayın sayısal değerini kullanmanız gerekir.

Tarih ve saat için toplayıcıyı birlikte bilmiyorum. Bana özel bir kontrol gibi geliyor.


16
24 saatlik zaman: "gg.aa yyyy SS mm ss". Sanırım geliştirici yerelleştirmeyi önemsemelidir (farklı ülkelerde farklı tarih / saat biçimi). Avusturya'dan selamlar.
hfrmobile

6
@hfrmobile - geçerli kültürün biçimini almak için System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePatternve öğelerini de kullanabilirsiniz System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern. MSDN bağlantısı
Wai Ha Lee

1
@WaiHaLee ile Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " " + time aynı fikirde: Zaman bileşenini manuel olarak da kısıtlayabilirsiniz:Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " HH:mm"
SteveCinq

Bunu kullandım ama CustomFormat kodunu kullanmak yerine seçici özellikleri koymak
kör Skwirl

67

İş için iki DateTimePickers kullanmak en iyisidir Bir tarih bölümü için varsayılan, ikinci DateTimePicker ise saat bölümü içindir. İkinci DateTimePicker öğesini aşağıdaki gibi biçimlendirin.

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

İkisi onları yakaladıktan sonra böyle görünmeli

İki Tarihli Zaman Seçicileri

Bu iki denetimden DateTime almak için aşağıdaki kodu kullanın

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

DateTime öğesini her iki denetime atamak için aşağıdaki kodu kullanın

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

1
Dakika sıklığını 30 dakikaya çıkarma olasılığı var mı? Kullanıcı yukarı veya aşağı düğmesini tıkladığında?
FaizanHussainRabbani

Mükemmel cevap! Projemde birçok kez yeniden kullanmak için özel UserControl yaptım.
mpasko256

Önerin için teşekkürler. Tarih ve saat için iki farklı kontrole sahip olmak mantıklıdır.
Najeeb

45

Ne yazık ki, bu çerçevedeki birçok yanlış isimden biri veya en iyi ihtimalle SRP'nin ihlalidir.

DateTimePicker öğesini defalarca kullanmak için, Format özelliğini Saat veya Özel olarak ayarlayın (CustomFormat özelliğini kullanarak saatin biçimini denetlemek istiyorsanız Özel'i kullanın). Ardından ShowUpDown özelliğini true olarak ayarlayın.

Bir kullanıcı tarih ve saati manuel olarak ayarlayabilse de, ikisini birden ayarlamak için GUI'yi kullanamaz.


24

DateTime Seçici hem tarih hem de saat seçmek için kullanılabilir, bu yüzden ona 'Tarih ve Saat Seçici' denir. " Biçim " özelliğini " Özel " olarak ayarlayabilir ve " Özel Biçim " özelliğinde farklı biçimlerde tarih / saati temsil etmek / seçmek için farklı biçim belirteçlerinin birleşimini ayarlayabilirsiniz . Ancak Tarihi değiştirmek isterseniz, açılır takvim kullanılabilirken Zaman seçimi durumunda (aynı kontrolde değerleri değiştirmek için yukarı / aşağı tuşlarını kullanabilirsiniz.

Örneğin , " ddddd, MMMM gg, yyyy ss: dd: ss tt " özel biçimi size şöyle bir sonuç verir: " 20 Ağustos 2009, Perşembe, 02:55:23 PM ".

Bunun için gereken örneğin uygun biçim belirteçleri için farklı kombinasyonlar ile oynayabilir AAAA "verecek Ağustos oysa" MM "verecektir Aug "


"DateTime Seçici hem tarih hem de saat seçmek için kullanılabilir, bu yüzden ona 'Tarih ve Saat Seçici' denir." - bunun dışında, bu yüzden soru soruldu.
Derf Skren

Gerçekten, bu kontrol çok sinir bozucu. Ben sadece bir şey öğleden sonra hata ayıklama kodunu darn şey kullanıcı tarafından düzenlenmiş tarih VEYA zamanı temsil eden bir değer döndüreceğini fark edene kadar geçirdim , ama her ikisini birden. Havalandırmak zorunda: nasıl bir kontrol geçerli bir kullanıcı tarafından düzenlenen tarih ve saati (benim özel biçim yyyy-MM-dd HH:mm) gösterir ve sonra görüntülenen tarih ve saatin yalnızca bir bölümünü yansıtan bir değer döndürmek olabilir . Buna böcek diyorum, ama onlarca yıldır orada ...
EBlake

16

Git Propertiessenin içinde dateTimePickerVisual Studio ve seti Formatiçin Custom. Altında CustomFormatbiçiminizi girin. Benim durumumda kullandımMMMMdd, yyyy | hh:mm

resim açıklamasını buraya girin
dateTimePickerProperties


DateTimePicker'da saatin nasıl biçimlendirileceğini / görüntüleneceğini sormuyor. Bir zamanı nasıl seçeceğini soruyor (dolayısıyla DateTimePicker adı, kontrolün bir zaman seçmek için de kullanılabileceğini varsayar)
nivs1978

Bu doğru cevap olmalı. Bir cazibe gibi çalıştı
KingMak

1

Zamanı göstermesini sağlayabilirsiniz . Bundan sonra, istediğinizi başarmak için muhtemelen iki kontrole (bir tarih, bir zaman) sahip olmanız gerekecektir.


1

Korkarım DateTimePicker denetimi bu tür şeyler yapma yeteneğine sahip değil. Oldukça basit (ve sinir bozucu!) Bir kontrol. En iyi seçeneğiniz, istediğinizi yapan bir üçüncü taraf kontrolü bulmak olabilir.

Tarih ve saati manuel olarak yazma seçeneği için, bunu gerçekleştirmek için bir TextBox / DateTimePicker birleşimiyle özel bir bileşen oluşturabilirsiniz ve üçüncü taraf denetimleri bir seçenek değilse makul derecede iyi çalışabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.