Comme d'autres l'ont dit, vous pouvez utiliser un DateTime
et ignorer la date, ou utiliser un TimeSpan
. Personnellement, je ne suis intéressé par aucune de ces solutions, car aucun type ne reflète vraiment le concept que vous essayez de représenter - je considère les types de date / heure dans .NET comme plutôt clairsemés, ce qui est l'une des raisons pour lesquelles j'ai commencé Noda Time . Dans Noda Time, vous pouvez utiliser leLocalTime
type pour représenter une heure de la journée.
Une chose à considérer: l'heure n'est pas nécessairement la durée écoulée depuis minuit le même jour ...
(En outre, si vous souhaitez également représenter l' heure de fermeture d'une boutique, vous pouvez constater que vous souhaitez représenter 24h00, c'est-à-dire l'heure de fin de journée. La plupart des API de date / heure - y compris Noda Heure - ne permettez pas que cela soit représenté comme une valeur de l'heure.)
Duration
dans Noda Time, ouTimeSpan
dans la BCL. J'encapsulerais probablement la «place dans la vidéo + le commentaire» comme type, puis j'aurais un tableau de ce type.Vous pouvez utiliser la durée
[Modifier]
Compte tenu des autres réponses et de la modification de la question, j'utiliserais toujours TimeSpan. Inutile de créer une nouvelle structure là où une structure existante du framework suffit.
Sur ces lignes, vous finiriez par dupliquer de nombreux types de données natifs.
la source
TimeSpan
ce type est quelque peu moche. C'est le meilleur qui soit disponible dans le cadre lui-même, mais ce n'est pas la même chose que de dire que c'est agréable.Si ce vide
Date
vous dérange vraiment, vous pouvez également créer uneTime
structure plus simple :Ou, pourquoi vous déranger: si vous n'avez pas besoin de faire de calcul avec ces informations, enregistrez-les simplement sous
String
.la source
TimeSpan
, qui gère déjà cela, et d'une manière bien meilleure.Je dis utiliser un DateTime. Si vous n'avez pas besoin de la partie date, ignorez-la. Si vous avez besoin d'afficher uniquement l'heure à l'utilisateur, affichez-la comme suit:
Il semble que tout le travail supplémentaire nécessaire pour créer une nouvelle classe ou même utiliser un TimeSpan ne soit pas nécessaire.
la source
DateTime.Now.ToString("hh:mm:ss.fff");
Microsecondes:DateTime.Now.ToString("hh:mm:ss.ffffff");
Nanosecondes (si DateTime a même autant de résolution):DateTime.Now.ToString("hh:mm:ss.fffffffff");
Selon MSDNJe pense que la classe de Rubens est une bonne idée, alors j'ai pensé à faire un échantillon immuable de sa classe Time avec une validation de base.
la source
En plus de Chibueze Opata :
la source
Voici une classe TimeOfDay complète.
C'est exagéré pour les cas simples, mais si vous avez besoin de fonctionnalités plus avancées comme je l'ai fait, cela peut vous aider.
Il peut gérer les cas d'angle, certains calculs de base, les comparaisons, l'interaction avec DateTime, l'analyse, etc.
Vous trouverez ci-dessous le code source de la classe TimeOfDay. Vous pouvez voir des exemples d'utilisation et en savoir plus ici :
Cette classe utilise DateTime pour la plupart de ses calculs et comparaisons internes afin que nous puissions tirer parti de toutes les connaissances déjà intégrées dans DateTime.
la source
Si vous ne souhaitez pas utiliser un DateTime ou TimeSpan, et souhaitez simplement stocker l'heure, vous pouvez simplement stocker les secondes depuis minuit dans un Int32, ou (si vous ne voulez même pas des secondes) les minutes depuis minuit. s'inscrirait dans un Int16. Il serait trivial d'écrire les quelques méthodes nécessaires pour accéder aux heures, minutes et secondes à partir d'une telle valeur.
La seule raison pour laquelle je peux penser à éviter DateTime / TimeSpan serait si la taille de la structure est critique.
(Bien sûr, si vous utilisez un schéma simple comme celui ci-dessus enveloppé dans une classe, il serait également trivial de remplacer le stockage par un TimeSpan à l'avenir si vous réalisez soudainement que cela vous donnerait un avantage)
la source