我有一个公式,该公式生成一个包含100行4列的表,最后一列返回给我一定的小时数,我希望将此值表示为“ d HH:mm”
我尝试使用Timespan,但不起作用
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)))。ToString(“ d HH:mm”)))应该返回“ d HH:mm” >
答案 0 :(得分:1)
您无法格式化浮点数,并且期望格式化程序弄清楚这是您想要的TimeSpan。因此,您应该从TimeSpan.FromHours(Double)
然后,以格式使用空格时,需要对其进行转义。对此进行了注释,但是它使用了C#语法和双反斜杠\\
,而您的代码缺少C#行终止符;
。我只是猜测并将您的问题视为VB.NET。
您可以转义空格,也可以从TimeSpan的各个属性构建字符串。这两个选项都显示在下面
Dim elapsed = TimeSpan.FromHours(DM() / (I * VPR() / 1000))
Dim formattedTimeSpan = $"{elapsed:d\ h\:mm}"
formattedTimeSpan = $"{elapsed.Days} {elapsed.Hours}:{elapsed.Minutes}"
您还可以使用$ string interpolation
使代码更具可读性DT5.Rows.Add(
I,
$"{100 * LA() / I:#,##0.0#}",
$"{I * VPR() / 100:#,##0.0#}",
formattedTimeSpan)
或者如果您仍然喜欢一行,
DT5.Rows.Add(I, $"{100 * LA() / I:#,##0.0#}", $"{I * VPR() / 100:#,##0.0#}", $"{TimeSpan.FromHours(DM() / (I * VPR() / 1000)):d\ h\:mm}")