代码之家  ›  专栏  ›  技术社区  ›  Bastien Vandamme

在ASP.NET中,如何强制DropDownList中的日期格式为“DD/MM/YYYY”?

  •  6
  • Bastien Vandamme  · 技术社区  · 16 年前

    DateTime date = DateTime.Now;
    List<DateTime> dates = new List<DateTime>();
    
    for (int i = 0; i < HISTORY_LENGTH; i++)
    {
        dates.Add(date.AddDays(-i));
    }
    
    DropDownList.DataSource = dates;
    DropDownList.DataBind();
    

    我将日期添加为DateTime,而不是字符串。我认为是调用DateTime对象的ToString()方法来创建在DropDownList中可见的文本。默认情况下,它是日期和时间。结果是:

    [1]: {15/07/2008 11:08:27}

    [2]: {14/07/2008 11:08:27}

    [3]: {13/07/2008 11:08:27}

    [5]: {11/07/2008 11:08:27}

    [6]: {10/07/2008 11:08:27}

    7 回复  |  直到 16 年前
        1
  •  1
  •   jdehaan    16 年前

    我会将DateTime包装在另一个对象中,并重写ToString(),因为它是dropdownlist显示的内容。

    class MyDateTime {
        public MyDateTime(DateTime dt) {
            _dt = dt;
        }
        public override String ToString() {
            return _dt.ToString("dd/MM/yyyy");
        }
        private DateTime _dt;
    }
    

    看见 http://www.color-of-code.de/index.php?option=com_content&view=article&id=58:c-format-strings&catid=38:programming&Itemid=66 举一些例子(我的作弊清单和我遇到的问题)。

    代码必须稍微修改一下:

    DateTime date = DateTime.Now;
    List<MyDateTime> dates = new List<MyDateTime>();
    
    for (int i = 0; i < HISTORY_LENGTH; i++)
    {
        dates.Add(new MyDateTime(date.AddDays(-i)));
    }
    
    DropDownList.DataSource = dates;
    DropDownList.DataBind();
    
        2
  •  24
  •   Andrew Hare    16 年前

    DropDownList.DataTextFormatString -然后,在数据绑定时,控件将应用正确的格式:

    <asp:DropDownList
        id="yourList"
        runat="server"
        dataTextFormatString="{0:dd/MM/yyyy}"/>
    
        3
  •  4
  •   Canavar    16 年前

    除了格式化数据源,您还可以将日期的格式设置为:

    DropDownList.DataTextFormatString = "{0:dd/MM/yyyy}";
    
        4
  •  2
  •   duffymo    16 年前

    Format 在将数据绑定到控件之前,列表中的日期将以这种方式显示。

        5
  •  1
  •   Jamie Ide    16 年前
       List<string> dates = new List<string>(HISTORY_LENGTH - 1);
    
        for (int i = 0; i < HISTORY_LENGTH; i++)
        {
            dates.Add(DateTime.Today.ToString("dd/MM/yyyy"));
        }
    
        DropDownList.DataSource = dates;
        DropDownList.DataBind();
    
        6
  •  0
  •   Ian    16 年前

    DateTime date = DateTime.Now;
    
    for (int i = 0; i < HISTORY_LENGTH; i++)
    {
        DropDownList.Items.Add(new ListItem(date.AddDays(-i).ToString("dd/MM/yyyy"), date.AddDays(-i)))
    }
    
        7
  •  0
  •   Indeed is Trash    16 年前

    如果您必须在整个应用程序中执行此操作,则需要查看CultureInfo对象。

    var culture = CultureInfo.CurrentCulture;
    

    CultureInfo 对象有一个名为 DateTimeFormat 它又有一个叫做 ShortDatePattern 你应该这样设置。。。

    culture.DateTimeFormatInfo.ShortDatePattern = "dd/MM/yyyy";
    

    String.Format("{d}", someDateTime);
    
    推荐文章