5

double値を時間に変換するにはどうすればよいですか? たとえば、このdouble値 がval = 0.00295692867015203あり、戻りたいとし4:15ます。

私は多くの調査を行いましたが、機能する解決策が見つかりませんでした! これも私が試した関数ですが、戻ります00:00:00

ConvertFromDecimalToDDHHMM(Convert.ToDecimal(val));

public 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;
    }
}

と を使用C#してASP.NETいます。アドバイスをいただければ幸いです。

4

3 に答える 3

14

うわー...あなたが意味することに気付くのに少し時間がかかりました"00:04:15.00"....

public static TimeSpan TimeSpan.FromDays(double value)あなたを取得しますTimeSpan

そしてDateTime.Today.AddDays(double value)、あなたに日付時刻を取得します

于 2013-01-25T18:50:21.453 に答える
7

のようなものが欲しいと思いますTimeSpan.FromDays(0.00295692867015203)。このTimeSpan関数は値を取り、(自然に) オブジェクトdoubleを返します: http://msdn.microsoft.com/en-us/library/system.timespan.fromdays.aspxTimeSpan

このTimeSpanオブジェクトは、次のように日時演算で使用できます。

var now = DateTime.Now; // say, 25/13/2013 12:23:34
var interval = TimeSpan.FromDays(0.00295692867015203); // 4:15
var futureTime = now + interval; // 25/13/2013 12:27:49
于 2013-01-25T18:49:45.957 に答える
1

試してみてください

public static string ConvertFromDoubleToDDHHMM(double days) {
  return TimeSpan.FromDays(days).ToString(@"dd\:hh\:mm");
}

最初にTimeSpan構造体の値を作成し、次にその値を としてフォーマットしますstring。詳細については、MSDN のカスタム TimeSpan フォーマット文字列を参照してください。

.NET 4.0 以降で動作します。

于 2013-01-25T20:14:53.610 に答える