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

时间:2015-01-15 07:20:42

标签: c# asp.net date

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

<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运行它时,它显示格式(带连字符) dd-mm-yyyy。为什么呢?

有人可以为此提供帮助吗?

3 个答案:

答案 0 :(得分:3)

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

尝试在 Web.config

上设置此项
 <configuration>
    <system.web>
       <globalization culture="en-GB" uiCulture="en-GB" />
    </system.web>
 </configuration>

在主键内设置所需的文化。 (但文化“en-GB”已经提供了所需的日期格式)。

希望我帮助过......

答案 1 :(得分:0)

如果要覆盖文化以使格式始终为“dd / MM / yyyy”,则可以使用以下内容。

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

答案 2 :(得分:0)

您希望强制分隔符成为特定字符(即'/'字符),而不是默认文化提供的字符。这可以通过将分隔符硬编码为日期格式化字符串中的文字来轻松实现,即:

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

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