C# 为什么更改浏览器时日期格式会自动更改?
我的表格上有一个网格视图。我正在用相同的数据绑定它。有一个模板字段,我在下面提到过C# 为什么更改浏览器时日期格式会自动更改?,c#,asp.net,date,C#,Asp.net,Date,我的表格上有一个网格视图。我正在用相同的数据绑定它。有一个模板字段,我在下面提到过 <asp:TemplateField HeaderText="To"> <itemtemplate> <asp:Label ID="Label2" runat="server" Text='<%# Convert.ToDateTime(Eval("Leave_To")).ToString("dd/MM/yyyy") %>'><
<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”头,这与您当前的文化不同。因此,它正在覆盖应用程序的当前区域性(Web服务器/IIS的区域性) 尝试在Web.config上设置此选项:
<configuration>
<system.web>
<globalization culture="en-GB" uiCulture="en-GB" />
</system.web>
</configuration>
在主密钥内设置所需的区域性。(但区域性“en GB”已经提供了所需的日期格式)
希望我帮助了…看起来您希望强制分隔符为特定字符(即
'/'
字符),而不是默认区域性提供的字符。这可以通过将分隔符硬编码为日期格式字符串中的文字来轻松实现,即:
foo.ToString("dd'/'MM'/'yyyy")
请注意,在
“/”分隔符字符周围添加了引号。我认为日期时间的字符串表示形式不会因浏览器而改变。由于您没有提供任何IFormatProvider
,因此它始终使用您的CurrentCulture
设置。如果此区域性设置相同,则这些格式也应相同。你真的确定在相同的区域设置下运行此代码吗?@SonerGönül:同意你的看法,那么为什么它只在IE 10中更改?我建议你通过记录CultureInfo.CurrentCulture
(或将其包含在测试页面的输出中)来诊断此问题。@Jonsket:是的,我肯定会包含它并检查。顺便说一下,我正在使用下面的代码将字符串转换为datetime<代码>日期到;DateTime.TryParseExact(lbl1.Text,“dd/MM/yyyy”,新文化信息(“en-US”),DateTimeStyles.None,out-Date\u-From)
在修复方面,您是否尝试过专门为网站()设置日期区域性,而不是使用默认区域性?