【问题标题】:How to format a time-stamp to show the date only in a grid view如何格式化时间戳以仅在网格视图中显示日期
【发布时间】:2011-08-14 00:02:08
【问题描述】:

在一个 aspx 页面中,我像这样绑定标签:

  <asp:TemplateField HeaderText="Date of Joining">
            <ItemTemplate>
                <asp:Label ID="Label6" runat="server" Text='<%# Eval("date_of_joining") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Paid Priviledge Date">
            <ItemTemplate>
                <asp:Label ID="Label8" runat="server" 
                    Text='<%# Eval("paid_priviledge_date") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

在后面的代码中,我像这样绑定网格视图:(给出了最小代码)

GridView1.DataSource = dt2;
GridView1.DataBind();

但 gridview 列显示日期如下:

4/12/2011 12:00:00 AM    
4/4/2011 12:00:00 AM

请建议如何删除时间戳部分并仅显示日期部分。

我知道如何通过使用 ToString 和 SubString 进行格式化来做到这一点。但我无法在 gridview 中执行此操作。

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    在您的代码隐藏中创建一个FormatDate 方法,然后从您的gridview 中调用它。
    http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
    http://www.csharp-examples.net/string-format-datetime/

    这部分会放在你的代码后面

    private object FormatDate(DateTime input)
    {
        return String.Format("{0:MM/dd/yy}", input);
    }
    

    而这一点将进入你的标记

        <asp:TemplateField HeaderText="Date of Joining">
            <ItemTemplate>
                <asp:Label ID="Label6" runat="server" Text='<%# FormatDate(Eval("date_of_joining")) %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Paid Priviledge Date">
            <ItemTemplate>
                <asp:Label ID="Label8" runat="server" 
                    Text='<%# FormatDate(Eval("paid_priviledge_date")) %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    

    这就是我所说的解决问题的D.R.Y. 方法。如果您需要以任何方式修改格式。您可以简单地编辑方法背后的代码,它会为您的所有标记带来甜蜜的爱。

    【讨论】:

    • 对不起先生..这么多天后,当我回顾这个解决方案时,我发现我已将 ilivewithian 的答案打勾为最合适的答案..但实际上你的答案是最有效的。我现在把你的打勾为正确的。对不起,错了。
    • 如果您在标记中执行此操作,则无需重新编译即可进行更改。
    • @Chad,投反对票,因为这不是您的偏好,这对我来说有点奇怪。给猫剥皮的方法有很多种,我的就是其中一种。我更喜欢不在标记中这样做,因为我喜欢保持干净。如果您不想重新编译,请在 App.config 中设置格式字符串。
    【解决方案2】:

    您可以为 eval 语句指定格式字符串:

    Eval("date_of_joining", "{0:dd/MM/yyyy}")
    

    【讨论】:

    • 太好了,我正在寻找这种超级有用的答案。非常感谢先生
    • 我不想听起来像“我是对的,你是错的”,因为这绝对是一个正确的答案。但是我的问题是......当您需要更改日期的格式时会发生什么?您是否通过所有标记来查找所有实例?通过将其设置为函数背后的代码,您可以在一处更改它,它将传播到所有实例。 DRY
    • 公平点,我对在stackoverflow答案中输入的第一件事感到内疚。
    【解决方案3】:

    使用"{0:d}" 表示短日期格式。 试试

     Text='<%# Eval("paid_priviledge_date","{0:d}") %>'
    

    和

    Text='<%# Eval("date_of_joining", "{0:d}") %>'
    

    【讨论】:

      【解决方案4】:

      您可以在绑定字段中使用DataFormatString,同样可以设置如下:

      <asp:Label ID="Label8" runat="server" Text='<%# Eval("paid_priviledge_date","{0:d}") %>'/>
      

      【讨论】:

        【解决方案5】:
        Text='<%# (Convert.ToDateTime((Eval("date_of_joining")))).ToShortDateString() %>'
        

        这是我发现的最简单的方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-10
          • 2018-06-15
          • 2022-01-04
          • 2011-08-29
          • 1970-01-01
          • 1970-01-01
          • 2012-08-13
          相关资源
          最近更新 更多