web-dev-qa-db-fra.com

Obtenir seulement le temps d'un objet datetime

J'essaie d'obtenir uniquement le temps d'un objet DateTime.

Disons que j'ai cet objet:

 Nullable<DateTime> data = new DateTime(2007,6,15,5 ,23,45);

J'ai essayé d'utiliser:

data.Value.ToShortTimeString()

Et je reçois:

5:23 AM

J'aimerais pouvoir afficher uniquement 5:23

Comment puis je faire ça?

7
aleczandru

Vous pouvez utiliser la méthode ToString avec la chaîne de formatage appropriée :

var time = date.ToString("H:mm");
15
Grant Thomas

Vous pouvez utiliser "H" spécificateur de format personnalisé .

Le spécificateur de format personnalisé "H" représente l'heure sous forme d'un nombre compris entre 0 et 23; c'est-à-dire que l'heure est représentée par une horloge de 24 heures basée sur zéro qui compte les heures écoulées depuis minuit. Une heure à un chiffre est formatée sans un zéro non significatif.

Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45);
Console.WriteLine(data.Value.ToString("H:mm"));

La sortie sera;

5:23

Voici une DEMO .

Pour plus d'informations, consultez Custom Date and Time Format Strings

4
Soner Gönül
        Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45);
        var timeofDay   = data.Value.TimeOfDay; // 05:23:45
3
jacob aloysious

Si vous devez obtenir un type TimeSpan, utilisez la propriété de la classe DateTime appelée TimeOfDay. Il ne retourne que la partie "temps".

Si vous devez obtenir une chaîne dans ce format, utiliser TimeOfDay est une surcharge et utilisez simplement ToString("hh:mm") pour formater votre sortie. Si vous ne voulez pas de résultats tels que 05:40, utilisez ToString("H:mm").

3
walther
var time = date.ToString("H:mm");

H représente ici le temps de 24 heures. c'est-à-dire 0-23

Voir plus de format Chaînes de format de date et heure personnalisées

2
Adeel

étrange, ça marche très bien pour moi, maby c'est un décor en visual studio?

Tu peux essayer ça

Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45);
Debug.Write(data.Value.Hour + ":" + data.Value.Minute);
0
Dylan Slabbinck