为什么更改浏览器时日期格式会自行更改?

Why date format changes itself when change the browser?

我的表单上有一个网格视图。我用相同的数据绑定它。有一个模板字段,我在下面提到过。

<asp:TemplateField HeaderText="To">
    <itemtemplate>
    <asp:Label ID="Label2" runat="server" 
         Text='<%# Convert.ToDateTime(Eval("Leave_To")).ToString("dd/MM/yyyy") %>'></asp:Label>
    </itemtemplate>
    <headerstyle horizontalalign="Left" />
    <itemstyle horizontalalign="Left" />
</asp:TemplateField>

我的问题是,当我 运行 在 Mozilla、Opera、Chrome 等平台上使用此表格时,它显示日期格式(带斜线)dd/mm/yyyy,但是当我 运行 它与 ie 10 一起显示格式(带连字符)dd-mm-yyyy。为什么?

任何人都可以帮忙吗?

如果您想覆盖区域性以便格式始终为 'dd/MM/yyyy',那么您可以使用以下内容。

Convert.ToDateTime(Eval("Leave_To")).ToString("dd/MM/yyyy", DateTimeFormatInfo.InvariantInfo)

我现在无法测试,但我猜 IE 正在请求中发送 "Accept-Language" header,这与您当前的文化不同。因此,它覆盖了应用程序的当前文化(WebServer/IIS 的文化)...

尝试在您的 Web.config 上进行设置:

 <configuration>
    <system.web>
       <globalization culture="en-GB" uiCulture="en-GB" />
    </system.web>
 </configuration>

在主键中设置你想要的文化。 (但是文化 "en-GB" 已经提供了所需的日期格式)。

希望我帮到了...

您似乎想强制分隔符为特定字符(即 '/' 字符),而不是默认区域性提供的字符。这很容易通过将分隔符硬编码为日期格式字符串中的文字来实现,即:

foo.ToString("dd'/'MM'/'yyyy")

请注意在 '/' 分隔符周围添加了引号。