我有一个十进制值(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);
答案 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"
从报告中获取。