转换Timespan - Gridview

时间:2016-09-15 04:40:49

标签: c# asp.net

以下代码有效。最后一行将代码格式化为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");

                }


            }

3 个答案:

答案 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}" />