Je reçois une valeur de retour d'un service Web en minutes, par exemple 538 minutes. J'ai besoin de casser cela en heures et en minutes. Quel est le moyen le plus rapide, dans le code .NET et le code VB6 (deux applications utilisent le service) pour convertir cela des minutes à HH: MM? P>
merci p>
6 Réponses :
Prenez le module 60, puis entier-divide de 60. P>
dans VB, la division Entier utilise \ code>. p>
Vous pouvez enregistrer une division par integer-fracture, puis multiplier le dos et soustraire: 538/60 = 8, 538-8 * 60 = 58, il en résulte donc 8:58 sans savoir à quel point il est de nos jours mais que la division était aussi lente.
Oublier ce problème. Vrai, la division prend généralement quelques cycles d'horloge plus de multiplication. Rien à craindre dans les langues de haut niveau, cependant, puisqu'il s'agit de toutes les cacahuètes comparées à toutes les frais générales, même les compilateurs modernes. Je Devinez I> que votre solution sera même plus lente, étant donné les frais généraux produites par le Mul et Sub, mais je ne parvenais jamais à comparer l'analyse comparative que si vous envisagez de boucler les calculs un milliard de fois par seconde ou plus.
Ce code doit fonctionner à la fois dans .NET et VB6: in .net exclusivement, vous devriez pouvoir effectuer ce qui suit (qui doit être testé): P> J'espère que cela aide! p> p>
Je pense que NEAL veut des zéros de premier plan. CTYPE (heures, chaîne) code> ne donnera pas de zéros de tête si des heures <10
@MarkJ vous avez raison. Afin de récupérer le temps correct avec un zéro avancé dans le boîtier nécessaire, vous devez utiliser CSTR et Padleft de la manière suivante: CSTR (heures) .padleft (2, "0" c) & ":" & CSTR (minutes) .Padleft (2, "0" c)
Le deuxième code ne fonctionne pas. Vous obtenez une erreur: System.ArgumentoutofRangeExceptionXception: "Heure, minute et Second Paramètres décrivent une dateTétime non représentable".
in .NET Vous avez une classe Timespan pour que vous puissiez faire ce qui suit
Dim t As New TimeSpan(0, 538, 0) 'Then you have the 2 properties t.Hours t.Minutes
Si vous devez effectuer des opérations avec d'autres objets DateTime, il serait peut-être utile d'utiliser un objet Timespan, par exemple
Dim oTS As New TimeSpan(0, 538, 0) MessageBox.Show(Format(oTS.Hours, "00") & ":" & Format(oTS.Minutes, "00")) Dim startime As DateTime = Date.Now Dim newtime As DateTime = startime + oTS MessageBox.Show(newtime.ToString("HH:mm"))
dans VB6, vous pouvez simplement utiliser le format VB6 (538 / 1440.0, "HH: mm") CODE> P>
Date Code> Les valeurs peuvent être traitées comme un nombre de jours et il y a 1440 minutes par jour. Ainsi, 538/1440 est le nombre de jours dans vos règles, puis vous pouvez utiliser
format code> p>