转换时间跨度-网格视图

本文关键字:视图 网格 时间跨度 转换 | 更新日期: 2023-09-27 18:07:00

下面的代码可以工作。最后一行将代码格式化为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");
                }

            }

转换时间跨度-网格视图

内置格式字符串不支持。你必须更深入一点,自己做一些格式化工作。不过也没那么糟:

e.Row.Cells[4].Text = string.Format("{0:00}:{1:00}", (int)timeSpent.TotalHours, timeSpent.Minutes);

你可以做

   string s =
       $"{((int)timeSpent.TotalHours).ToString("00")}:{timeSpent.Minutes.ToString("00")}"

您可以在绑定字段中添加dataformatstring="{0:M-dd-yyyy}"属性,如下所示

<asp:BoundField DataField="Date" HeaderText="Date" DataFormatString="{0:dd-M-yyyy}" />