将小数小时转换为HH:ii:ss大于24小时

时间:2012-02-07 16:51:25

标签: c# rdlc

我有一个十进制值(64.17小时),需要将其转换为小时,分钟和秒的时间戳,但小时值应显示64而不是16。

它也不应显示微秒,因此64.17将显示为

64:10:12

有人帮我这个吗?我还需要将它放在一个聚合函数中(在这种情况下是平均值)

TimeSpan ts = new TimeSpan();
            ts.Add(TimeSpan.FromHours(ncr_time_lost));
            Console.WriteLine(ncr_time_lost + " = " + TimeSpan.FromHours(ncr_time_lost).ToString());

            return TimeSpan.FromHours(ncr_time_lost);

2 个答案:

答案 0 :(得分:4)

为什么不使用TimeSpan结构?是的,它记录了几天,但也有一个TotalHours属性,可以为您提供所需的一切。

您还可以对TotalMilliseconds属性进行任何平均计算。

有关格式化TimeSpan的详细信息,请参阅here

答案 1 :(得分:2)

更新工作代码 将以下内容添加到报告的代码部分

Public Function TimeSpanToString(source as Timespan) as String
    Dim result As String
    result = Convert.ToInt32(source.TotalHours).ToString() & ":" & source.Minutes.ToString() & ":" & source.Seconds

    return result
End Function

以下是一个示例的答案:TimeSpan.FromHours Method

<强>更新: 格式“64:10:12”可以使用以下代码完成:

static string TimeSpanToString(TimeSpan source)
{
    string result = string.Format("{0}:{1}:{2}",
        (int)source.TotalHours,
        source.Minutes,
        source.Seconds);
    return result;
}

<强>更新: 不知道它是否正确,但请尝试以下方法从RDLC中使用它:

public class SomeClass
{
    public TimeSpan Time { get; set; }

    public string FormattedTime
    {
       get { return TimeSpanToString(Time); }
    }

    private static string TimeSpanToString(TimeSpan source)
    {
        // Code.
    }
}

然后尝试将其作为"=Fields!FormattedDate.Value"从报告中获取。