C# 在“d HH:mm”中转换双精度

C# 在“d HH:mm”中转换双精度,c#,vb.net,C#,Vb.net,我有一个公式,它生成一个包含100行和4列的表,最后一列返回一定的小时数,我希望这个值用d HH:mm表示 我试过时间跨度,但不起作用 DT5.Rows.Add(I, Format((100 * LA()) / I, "#,##0.0#"), Format(((I * VPR()) / 100), "#,##0.0#"), (((DM() / ((I * VPR()) / 1000))).ToString("d HH:mm"))) 最后一部分DM/I*VPR/1000.ToStringd HH

我有一个公式,它生成一个包含100行和4列的表,最后一列返回一定的小时数,我希望这个值用d HH:mm表示

我试过时间跨度,但不起作用

DT5.Rows.Add(I, Format((100 * LA()) / I, "#,##0.0#"), Format(((I * VPR()) / 100), "#,##0.0#"), (((DM() / ((I * VPR()) / 1000))).ToString("d HH:mm")))

最后一部分DM/I*VPR/1000.ToStringd HH:mm应返回d HH:mm中的某些内容。您不能格式化浮点值,并期望格式化程序确定它是您想要的时间跨度。因此,您应该从TimeSpan.FromHoursDouble创建TimeSpan

然后,在格式中使用空格时,需要将其转义。对此进行了评论,但它使用了C语法和双反斜杠\,而您的代码缺少C行终止字符;。我只是猜测一下,把你的问题当作VB.NET

您可以转义空间,也可以从TimeSpan的各个属性构建字符串。这两个选项如下所示

时间间隔=时间间隔。从小时数dm/I*VPR/1000 Dim formattedTimeSpan=${运行时间:d\h \:mm} formattedTimeSpan=${Appeased.Days}{Appeased.Hours}:{Appeased.Minutes} 您还可以使用

DT5.Rows.Add 我 ${100*LA/I:,0.0}, ${I*VPR/100:,0.0}, 格式化时间跨度 或者如果你还是喜欢一条线

DT5.Rows.AddI,${100*LA/I:,0.0},${I*VPR/100:,0.0},${TimeSpan.fromrhoursdm/I*VPR/1000:d\h \:mm}
“不工作”错误是一个棘手的错误。什么是LA、VPR和DM?你能展示一下你在哪里创建时间跨度的代码吗?不知道@EdPlunkett是不是想搞笑,但是。。。关于时间跨度,你都试了些什么?你能再详细说明一下吗?LA、VPR和DM都是由程序给出的。我最后一次尝试TimeSpan:TimeSpan.FromHoursDM/I*VPR/1000.ToStringd hh:mm@AlexNunes在调试器中,当您在运行时放入断点并在调试器中停止时,DM/I*VPR/1000返回的值是什么,TimeSpan.FromHoursDM/I*VPR/1000返回的值是什么?您的格式字符串对于TimeSpan无效。。看见您需要对非格式说明符的字符进行转义,例如空格和冒号,例如d\\hh\\:mmIt工作正常,非常感谢。