Il est 8h30 et j'essaie de découvrir combien de secondes il y a entre maintenant et la prochaine heure entière (9h00). Je pense que je veux juste merci. p> DateTime.now.addhours (1 Code>) mais après que je fasse cela, je pense avoir besoin du "plancher". Comment obtenir cette valeur? P>
11 Réponses :
Vous n'avez pas à vous désordre avec des plafonds et des sols. Vous pouvez bien sûr extraire le composant datetime.hour code> < / strong>
propriété représente tout em> heures (c'est un entier de 0 et 23) de l'heure de la journée représentée par la dateTime. Vous pouvez utiliser ceci et le datetime.date CODE> FORT>
Propriété Pour supprimer les composants de la dateTime que vous ne voulez pas (données de la sous-heure), puis soustraire si nécessaire pour produire un Timespan code>. < Pré> xxx pré>
totaseconds code> de la trajectoire code> résultat si vous voulez le résultat en secondes. P> p>
Cela équivaut toujours à 1 heure. Vous devez enlever les minutes en quelque sorte.
@smoore: Non, ça ne le fait pas. C'est correct. datetime.hour code> est un
int code> qui représente entiers i> heures.
Vous devez donc soustraire le procès-verbal «reste», trouvez la différence et multipliez cela de 60, non? P>
Juste arrondir l'heure de la journée en heures jusqu'à la valeur intégrale suivante:
Que diriez-vous: ou (peut-être plus clair): p>
Je ferais Timespan.Parse 08:30, ajoutez 1 heure à l'objet, puis récupérez la partie Hour et construisez une nouvelle chaîne avec: 00 comme le procès-verbal et répétez la nouvelle chaîne. Il peut y avoir un moyen plus efficace de le faire, mais je trouve cette technique pour lire. P>
Que diriez-vous de cela:
var currentTime = DateTime.Now; var hour = currentTime.AddHours(1).Hour; var newTime = Convert.ToDateTime(hour + ":00"); var timespan = newTime.Subtract(currentTime); var secondsDiff = timespan.TotalSeconds;
TimeSpan sec = new TimeSpan(0, 0, 3600 - (DateTime.Now.Minute * 60));
// complètement mal interprété. Réécriture totalement
Je ferais juste quelque chose comme ça p>
TimeSpan result = (new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour + 1, 0, 0)).Subtract(DateTime.Now); Basically here you are building a new DateTime that is one hour on from Now, with no minutes or seconds, then you subtract Now from this and have your result.
Cela semble être le plus simple: (si vous le souhaitez en nombres entiers - entier - alors préfixe datetime.now ... code> avec code> avec < code> (int) code>. p> p>
C'est en fait: 3600 - DateTime.NOW.TimeOdday.TotalSeconds% 3600. Mais +1 pour la solution la plus courte.
@Nightdweller Je suppose que vous avez commenté une version antérieure de la réponse. C'est corrigé :)
:) tant de solutions différentes si rapides - vous êtes obligé de manquer quelque chose. Cela peut ne pas être une compétition (et c'est) - mais je pense que vous devriez gagner :)
Oh - et je pense que vous voulez dire la plupart i> simple :)
@Nnightdweller merci :) L'anglais est, malheureusement, pas ma langue maternelle.
Je pense que cette réponse serait meilleure si vous avez expliqué pourquoi le numéro est 3600 code>.
une version plus lisible: