5

如何将double价值转换为时间?例如我有这个doubleval = 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值并返回TimeSpan对象(自然):http: //msdn.microsoft.com/en-us/library/system.timespan.fromdays.aspx

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 回答