0

我正在将一个 excel 文件导入 asp.net,并将其填充到网格视图中......

我在 excel 表中有一个时间列我正在插入以下格式“hh:mm”,但我一直在 asp.net 中获得完整格式

示例:excel 中的 11:11 我进入 asp.net 12/30/1899 11:11:00 AM 尽管 excel 中单元格的格式是 h:mm

我正在尝试更改数据表中的值,但它不起作用......我该如何解决这个问题?

 timee = row("TIME_TO_SEND")
 finalTime = timee.Substring(0, 5)
 row("TIME_TO_SEND")="hh:mm"

请注意,日期的转换正在工作......但我的问题是在数据表中日期的格式是完整的......所以当我用数据表填充网格视图时,我进入了时间列:12/30/1899 上午 11:11:00

4

3 回答 3

0

尝试使用

DateTime.Parse(row("TIME_TO_SEND"), "hh:mm")

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

于 2013-10-09T07:55:22.953 回答
0

当您在excel中设置格式时,excel保留所有数据但使用格式显示。在您的情况下,该列还包含整个日期时间,但仅显示您设置的部分。要获得所需的结果,请执行以下操作。

DateTime timee = DateTime.Parse(row("TIME_TO_SEND"));
string finalTime = timee.ToString("hh:mm");

更新:- 由于您想在运行时在 gridview 中格式化日期时间,请使用 GridView'sRowDataBound 事件,该事件在每次绑定行时触发。

假设您的时间列是第 3 列,然后索引为 0,它将是第 2 列,您如何格式化它。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
          DateTime dt = DateTime.Parse(e.Row.Cells[2].Text);
          e.Row.Cells[2].Text = dt.ToString("hh:mm");
     }
}
于 2013-10-09T07:56:23.167 回答
0

你得到的是一个DateTime.

使用DateTime.ToString正确格式化。

finalTime = row("TIME_TO_SEND").ToString("hh:mm")
于 2013-10-09T07:58:42.703 回答