Convertir les heures décimales en JJ: HH: MM
Im essayant de convertir un decmial nombre d'heures, de jours, d'heures et de minutes.
C'est ce que j'ai jusqu'à présent, ce n'est pas tout à fait encore là. J'ai besoin de soustraire le nombre d'heures des jours des heures de la partie si cela a du sens?
///<summary>
///Converts from a decimal value to DD:HH:MM
///</summary>
///<param name="dHours">The total number of hours</param>
///<returns>DD:HH:MM string</returns>
public static string ConvertFromDecimalToDDHHMM(decimal dHours)
{
try
{
decimal hours = Math.Floor(dHours); //take integral part
decimal minutes = (dHours - hours) * 60.0M; //multiply fractional part with 60
int D = (int)Math.Floor(dHours / 24);
int H = (int)Math.Floor(hours);
int M = (int)Math.Floor(minutes);
//int S = (int)Math.Floor(seconds); //add if you want seconds
string timeFormat = String.Format("{0:00}:{1:00}:{2:00}", D, H, M);
return timeFormat;
}
catch (Exception)
{
throw;
}
}
SOLUTION:
///<summary>
///Converts from a decimal value to DD:HH:MM
///</summary>
///<param name="dHours">The total number of hours</param>
///<returns>DD:HH:MM string</returns>
public static string ConvertFromDecimalToDDHHMM(decimal dHours)
{
try
{
decimal hours = Math.Floor(dHours); //take integral part
decimal minutes = (dHours - hours) * 60.0M; //multiply fractional part with 60
int D = (int)Math.Floor(dHours / 24);
int H = (int)Math.Floor(hours - (D * 24));
int M = (int)Math.Floor(minutes);
//int S = (int)Math.Floor(seconds); //add if you want seconds
string timeFormat = String.Format("{0:00}:{1:00}:{2:00}", D, H, M);
return timeFormat;
}
catch (Exception)
{
throw;
}
}
source d'informationauteur WraithNath | 2012-03-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
laps de Temps.FromHours
pour obtenir la plage de temps, alors vous avez tout ce dont vous avez besoin:Par exemple:
Vous devez soustraire
(D * 24)
de quelques heures... ou vous pouvez simplement utiliser:Si vous allez jeter à
int
de toute façon, il n'y a pas besoin d'appelerMath.Floor
. Ainsi, par exemple, vous pouvez utiliser:D'autre part, vous devez être prudent si elle peut être négatif - toutes sortes de choses pourraient tordu dans ce cas. Si vous ne croyez pas que vous avez à gérer cela, j'avais explicitement le vérifier et de lever une exception si
dHours
est négatif avant de faire quoi que ce soit d'autre.(Notez que votre bloc try/catch est inutile et gênant pour le moment. Simplement se débarrasser de lui.)
Pourquoi ne pas faire quelque chose comme cela?
Cela vous donnera:
Alors vous pouvez interroger l'
TimeSpan
objet que vous souhaitez: http://msdn.microsoft.com/en-us/library/system.timespan.aspxREMARQUE:
TimeSpan.FromHours
besoin d'undouble
d'entrée, pas undecimal
.Simple.
résultat sera 00:00:15 secondes, si compteur = 1 alors le résultat sera 00:01:00 et ainsi de suite.
voici un autre post qui expains assez bien.
Convertir une date en chaîne de format aaaa-mm-jj HH:MM:SS - C#
MyDateTime.ToString("yyyy-MM-dd hh:mm:ss");
aussi
http://blog.stevex.net/string-formatting-in-csharp/