2010-06-24 6 views
3

J'ai un timepicker (datetimepicker) formaté en HH: mm - 24 heures. Il affiche 00 à 24 et 00 à 59 et ne permet pas d'entrer des valeurs invalides. C'est exactement ce que je veux. Toutefois, il renvoie des valeurs de 12 heures avec les indicateurs AM et PM. Cela signifie que lorsque l'utilisateur entre "00", il est retourné comme "12", et "14" est retourné comme "2:00". Ce n'est pas ce que je veux.Winforms .net Datepicker ne respecte pas le format 24 heures?

Je peux tester et convertir ces valeurs de retour non désirées, mais sûrement (?) Il y a un moyen plus élégant de persuader cette chose de me donner les valeurs que je veux plutôt que de vérifier ces conditions spéciales? Une propriété simple que j'ai oublié peut-être?

+0

Utilisez-vous une propriété 'Value' du datetimepicker? Il devrait renvoyer une valeur typée DateTime. –

+0

Oui, je lis la valeur.ToString(). Je ne savais pas qu'il y avait une autre propriété à lire pour obtenir la valeur ... – mickeyf

Répondre

4

Quand vous lisez la valeur, vous devez utiliser:

string value = dateTimePicker.Value.ToString("HH:mm"); 

Si vous utilisez juste Value.ToString(), vous obtiendrez la mise en forme de chaîne par défaut (12 heures).

+0

C'est exactement ce que je fais (c'est à dire, value.ToString() plutôt que value.ToString (formatage). le format pour le contrôle aurait déjà fait cela pour moi, mais apparemment pas Merci - Je vais essayer ceci quand je retournerai au travail Lundi AM – mickeyf

+0

@mickey: ToString() utilisera simplement la culture actuelle - c'est sans rapport avec le contrôle Comme vous appelez DateTime.ToString, vous obtenez une instance DateTime lorsque vous appelez picker.Value.Vous pouvez remplacer la culture actuelle et définir la culture actuelle sur 24time, et ToString() vous donnera le comportement que vous avez –

+0

Merci - cela résout exactement le problème Apparemment, la propriété Format pour le contrôle signifie «strictement le format d'affichage pour le contrôle lui-même», ce qui est assez raisonnable, mais n'était pas comment je pensais à cela. – mickeyf

3

Comment obtenez-vous la valeur de temps saisie par le contrôle?

Si vous avez un contrôle DateTimePicker et définissez sa propriété Format à Custom, et sa CustomFormat propriété à HH:mm, vous obtenez un lorsque vous lisez la propriété Value temps de format 24 heures (comme un type DateTime).

EDIT: Si vous utilisez la valeur ToString() (comme vous le dites dans le commentaire ci-dessus), cela utilisera vos paramètres de localisation actuels. Vous seriez beaucoup mieux de lire les valeurs de DateTime (par exemple DateTime.HourDateTime.Minute).