.NET应用程序使用美国日期而不是欧盟日期
本文关键字:日期 NET 美国 应用程序 | 更新日期: 2023-09-27 18:20:58
我有一个应用程序,它从日期选择器中获取日期,然后在屏幕上显示。它在任何地方都运行良好,但在这个新的云服务器上,如果我选择9月份的日期,它会显示为
2014年4月9日至2014年6月9日16:52
什么时候应该是
2014年9月4日至2014年9日6日
web.config中是否有我可以更改的设置以使用欧洲日期设置制作应用程序?
您需要在web.config中设置位置。否则,将使用操作系统默认值。
在ASP.NET网页中,可以设置两个区域性值,即区域性和UICulture属性。区域性值确定区域性相关函数的结果,如日期、数字和货币格式等。UICulture值确定为页面加载哪些资源。
http://msdn.microsoft.com/en-us/library/vstudio/bz9tc508(v=vs.100).aspx
对于英国,我相信你的参赛作品将是
<globalization culture="en-GB"/>
实际上,默认使用浏览器指定的语言首选项可能更好,这样您将根据用户偏好获得正确的区域性。
<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"/>
如果是web应用程序,您可以设置:
<system.web>
...
<globalization culture="de-CH" uiCulture="de-CH" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
...
</system.web>
在web.config文件中。
或者,您可以在aspx页面中添加内联脚本
如果您没有源代码并且不想设置静态区域性,这将非常有用,
(例如,当您希望基于Request.QueryString-parameter而不是浏览器中设置的语言来切换ReportServer.aspx的语言时):
<script type="text/C#" runat="server">
protected override void InitializeCulture()
{
string lang = "de-CH";
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(lang );
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(lang );
}
base.InitializeCulture();
}
</script>
或者你可以在页面上静态设置区域性本身的
<%@ Page UICulture="de" Culture="de-CH" %>
请注意,如果您在web.config文件中设置区域性,由于某些原因,这种特殊的麻烦有时不会消失(我在瑞士国家广播公司的"en-US"服务器上安装应用程序时遇到过这种情况)。
然后,您需要创建一个新的基类并从System.Web.UI.Page继承,并且不允许在构造函数(the,False)中重写
Public MustInherit Class claPageBaseForm
Inherits System.Web.UI.Page
Protected Sub New()
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name, False)
System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name, False)
End Sub
C#代码,如果你需要它
public /* abstract */ class claPageBaseForm : System.Web.UI.Page
{
protected claPageBaseForm()
{
System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo(System.Globalization.CultureInfo.
CurrentCulture.Name, false);
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo(System.Globalization.CultureInfo.
CurrentCulture.Name, false);
}
}
然后在您的网页代码绑定中,从基类而不是System.web.UI.page 继承
partial class YourPage: claPageBaseForm
{
}
而不是
partial class YourPage: System.Web.UI.Page
{
}
这是对抗它的最快方法,因为你可以在源代码中进行搜索和替换
不管怎样,拥有一个通用的基页是很有用的。
此外,请注意,此"功能"也会影响类库(string.Format(Insert INTO TABLE WHATEVER '{0}', dateTime.ToString())
),因此在页面上设置它可能不够(如果当前日期<13,它甚至可能只在数据库中保存垃圾,而不会返回错误-此外,它还可以在select时检索垃圾!)