请参阅下面的数据库DDL:
create table datetest (datetime1 datetime)
insert into datetest values(getdate())
请参阅下面的演示代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# bind("datetime1") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
页面上的输出是:11/04/2013 19:51:40,但数据库值为:2013-04-11 19:51:40.017(注意毫秒被切掉第一个值)。< / p>
我已经调查了这个,并在这里发现了一些帖子,建议使用EVAL和String.Format,但我没有成功。如何在网页上显示毫秒?
我尝试过以下代码:
<asp:Label ID="Label1" runat="server" Text='<%
Eval("datetime1").ToString("dd/MM/yyyy hh:mm:ss.fff") %>'></asp:Label>
但是,我被提示例外:“从字符串”dd / MM / yyyy“转换为”Integer“类型无效。”
答案 0 :(得分:1)
<asp:Label ID="Label1" runat="server" Text='<%# Eval("datetime1").ToString("dd/MM/yyyy hh:mm:ss.fff") %>'></asp:Label>
这样的事情应该这样做。如果您需要有关自定义时间格式的帮助,请查看此处:http://msdn.microsoft.com/en-gb/library/8kb3ddd4.aspx
您不需要执行模板来更改格式,但您可以在自定义格式属性中添加{0:dd/MM/yyyy hh:mm:ss.fff}
答案 1 :(得分:0)
您应该将Eval
与其他格式参数一起使用,而不是Eval().ToString()
调用:
<asp:Label ID="Label1" runat="server"
Text='<%# Eval("datetime1", "{0:dd/MM/yyyy hh:mm:ss.fff}") %>'></asp:Label>