将ToShortDateString格式化为dd/MM/yyyy

30

我有一个类似这样的日历:

视图

 <td>
     <asp:Calendar ID="Calendar1" runat="server" 
      OnSelectionChanged="DateChange">
     </asp:Calendar>
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
 </td>

.Cs 文件

protected void Page_Load(object sender, EventArgs e)
    {
        TextBox2.Text = DateTime.Today.ToShortDateString()+'.';
    }

    protected void DateChange(object sender, EventArgs e)
    {
        TextBox2.Text = Calendar1.SelectedDate.ToShortDateString() + '.';
    }

它显示的日期格式是"MM/dd/yyyy",但我想把它显示为"dd/MM/yyyy",我尝试将DateTime.Today.ToShortDateString()+'.'更改为DateTime.Today.ToString("dd/MM/yyyy")+'.'

但是我得到了错误:

Error 3 No overload for method 'ToShortDateString' takes 1 arguments

我该怎么做才能解决这个问题?

2个回答

55

ToShortDateString 没有带任何参数的重载。

如果你的 ToShortDateString() 返回格式为 MM/dd/yyyy,那么就意味着你的 CurrentCultureShortDatePattern 属性中有这个格式。

你可以使用自定义格式字符串来更改日期时间格式,如下所示:

TextBox2.Text = DateTime.Today.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

1
你需要第二个参数吗?看起来这只对内置格式有必要:"d", "D", "f", "F", "g", "G", "m", "o", "r", "s", "t", "T", "u", "U", "Y" - Sinjai
3
作为最佳实践,是的,你需要这样做。否则,你可能会得到不同格式的结果。 /(对于“DateSeparator”)和 :(对于“TimeSeparator”)指定符在自定义日期和时间格式中有“特殊”的含义,即“将当前区域设置或提供的区域设置的日期或时间分隔符替换为我”。如果您没有使用任何区域设置这些指定符,则它们将被替换为“CurrentCulture”的日期和/或时间分隔符,这可能与不同文化的 /: 不同。 - Soner Gönül
CultureInfo.InvariantCulture真的必要吗? - Alexander S.
1
@AlexanderS. 那样的话,是的。请看我的先前评论。/:字符具有特殊含义,其"表示"取决于您使用的文化设置。 - Soner Gönül

2
也许更简单的方法是使用:
DateTime.Today.ToString("dd/MM/yyyy");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接