154 votes

DateTimePicker : choisissez la date et l'heure.

Est-il possible d'utiliser DateTimePicker (Winforms) pour choisir à la fois la date et l'heure (dans la liste déroulante) ? Comment modifier l'affichage personnalisé de la valeur sélectionnée ? En outre, est-il possible de permettre à l'utilisateur de saisir la date et l'heure manuellement ?

199voto

itsmatt Points 18905

Réglez le format sur Personnalisé, puis spécifiez le format :

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

ou toute autre forme de présentation. Vous pouvez alors saisir directement la date et l'heure. Si vous utilisez le système MMM, vous devrez utiliser la valeur numérique du mois pour la saisie, à moins que vous n'écriviez vous-même un code pour cela (par exemple, 5 donne mai).

Je ne connais pas le sélecteur de date et d'heure. Cela ressemble à un contrôle personnalisé pour moi.

18 votes

Horloge de 24 heures : "dd MM yyyy HH mm ss". Je suppose que le développeur doit se soucier de la localisation (format de date/heure différent selon les pays). Salutations d'Autriche.

7 votes

@hfrmobile - vous pouvez également utiliser System.Globalization.CultureInfo.CurrentCulture.DateTimeForm‌​at.ShortDatePattern et System.Globalization.CultureInfo.CurrentCulture.DateTimeForm‌​at.ShortTimePattern pour obtenir le format de la culture actuelle. Lien MSDN

1 votes

D'accord avec @WaiHaLee : Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " " + time Vous pouvez également contraindre, par exemple, la composante temps manuellement : Dim date As String = CultureInfo...ShortDatePattern Dim time As String = CultureInfo...ShortTimePattern dtpThing.Format = DateTimePickerFormat.Custom dtpThingEnd.CustomFormat = date + " HH:mm"

45voto

Nescio Points 12613

Malheureusement, il s'agit de l'une des nombreuses erreurs de langage du cadre, ou au mieux d'une violation de l'ASR.

Pour utiliser le DateTimePicker pour les heures, définissez la propriété Format sur Time ou Custom (utilisez Custom si vous souhaitez contrôler le format de l'heure à l'aide de la propriété CustomFormat). la propriété CustomFormat). Ensuite, définissez la propriété ShowUpDown sur true.

Bien qu'un utilisateur puisse régler la date et l'heure ensemble manuellement, il ne peut pas utiliser l'interface graphique pour régler les deux.

26voto

Danish Points 357

DateTime Picker peut être utilisé pour choisir à la fois la date et l'heure, c'est pourquoi il est appelé 'Date and Time Picker'. Vous pouvez définir le " Format "à la propriété " Personnalisé "et définir une combinaison de différents spécificateurs de format pour représenter/collecter la date/heure dans différents formats dans le champ " Format personnalisé propriété ". Toutefois, si vous souhaitez modifier la date, vous pouvez utiliser le calendrier contextuel, alors que dans le cas de la sélection de l'heure (dans le même contrôle), vous devez utiliser les touches haut/bas pour modifier les valeurs.

Par exemple, un format personnalisé " ddddd, MMMM dd, yyyy hh:mm:ss tt "Vous obtiendrez un résultat comme celui-ci : " Jeudi, 20 août 2009 02:55:23 PM ".

Vous pouvez jouer avec différentes combinaisons pour les spécificateurs de format afin de répondre à vos besoins, par ex. MMMM donnera " Août " alors que MM donnera " Août "

1 votes

"DateTime Picker peut être utilisé pour choisir à la fois la date et l'heure, c'est pourquoi il est appelé 'Date and Time Picker'." - sauf qu'il ne le peut pas, c'est pourquoi la question a été posée.

1 votes

En effet, ce contrôle est très frustrant. Je viens de passer un après-midi à déboguer du code jusqu'à ce que je réalise que cette satanée chose renvoie une valeur qui représente la date modifiée par l'utilisateur. OU l'heure, mais pas les deux. Je dois me défouler : comment un contrôle peut-il afficher une date et une heure valides modifiées par l'utilisateur (mon format personnalisé est le suivant yyyy-MM-dd HH:mm ) et renvoie ensuite une valeur qui ne reflète qu'une partie de l'objet de l'enquête. affiché la date et l'heure. J'appellerais ça un bug, mais ça existe depuis des décennies...

1voto

Craig Points 5169

Vous pouvez faire en sorte qu'il affiche temps . A partir de là, vous devrez probablement avoir deux contrôles (une date, une heure) pour accomplir ce que vous voulez.

1voto

Jeffrey L Whitledge Points 27574

Je crains que le contrôle DateTimePicker n'ait pas la capacité de faire ces choses. Il s'agit d'un contrôle assez basique (et frustrant !). Votre meilleure option est peut-être de trouver un contrôle tiers qui fait ce que vous voulez.

Pour ce qui est de la possibilité de saisir la date et l'heure manuellement, vous pouvez créer un composant personnalisé avec une combinaison TextBox/DateTimePicker pour accomplir cette tâche, et cela pourrait fonctionner raisonnablement bien, si les contrôles tiers ne sont pas une option.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X