以下代码有效。最后一行将代码格式化为dd:hh:mm。我怎么能把它显示为hh:mm。如果我将最后一行更改为
e.Row.Cells[4].Text = timeSpent.ToString(@"hh\:mm");
因为它超过24小时我得到一个例外。目的是将输出设为26:30而不是01:02:30
我的代码是:
TimeSpan timeSpent = TimeSpan.Zero;
protected void GridViewFortNight_RowDataBound(object sender, GridViewRowEventArgs e)
{
var tempTimeCalc = "";
if (e.Row.RowType == DataControlRowType.DataRow)
{
tempTimeCalc = e.Row.Cells[4].Text.ToString();
timeSpent += TimeSpan.Parse(tempTimeCalc);
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[4].Text = timeSpent.ToString(@"dd\:hh\:mm");
}
}
答案 0 :(得分:1)
内置格式字符串不支持它。你必须更深入一些并自己做一些格式化。但不是那么糟糕:
e.Row.Cells[4].Text = string.Format("{0:00}:{1:00}", (int)timeSpent.TotalHours, timeSpent.Minutes);
答案 1 :(得分:0)
你可以做到
string s =
$"{((int)timeSpent.TotalHours).ToString("00")}:{timeSpent.Minutes.ToString("00")}"
答案 2 :(得分:0)
你可以添加dataformatstring =" {0:M-dd-yyyy}"属性到绑定字段,如此
<asp:BoundField DataField="Date" HeaderText="Date" DataFormatString="{0:dd-M-yyyy}" />