在GridView中格式化日期

时间:2013-04-11 19:11:55

标签: vb.net

请参阅下面的数据库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“类型无效。”

2 个答案:

答案 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>