.NET App使用美国日期而非欧盟日期

时间:2014-09-05 16:13:04

标签: c# .net date

我有一个应用程序,它从datepicker获取日期,然后在屏幕上显示。它工作得很好,但在这个新的云服务器上,如果我在9月份选择一个日期,它显示为

09-Apr-2014 16:52至09-Jun-2014 16:52

什么时候应该

2014年9月4日至2014年9月6日

web.config中是否有设置我可以更改为使用欧洲日期设置制作应用程序?

3 个答案:

答案 0 :(得分:0)

您需要在web.config中设置您的位置。否则,将使用操作系统默认值。

  

在ASP.NET网页中,您可以设置两个文化值,即Culture和UICulture属性。 “文化”值确定文化相关函数的结果,例如日期,数字和货币格式等。 UICulture值确定为页面加载的资源。

http://msdn.microsoft.com/en-us/library/vstudio/bz9tc508(v=vs.100).aspx

对于英国,我相信你的参赛作品将是

<globalization culture="en-GB"/>

答案 1 :(得分:0)

如果它是网络应用程序,您可以设置:

<system.web>
   ...
   <globalization culture="de-CH" uiCulture="de-CH" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
   ...
</system.web>
web.config文件中的

或者您可以在aspx页面中添加内联脚本。
如果您没有源代码并且不想设置静态文化,这非常有用。 (例如,当您想要基于Request.QueryString参数而不是浏览器中设置的语言切换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文件中设置了这种文化,那么由于某些原因这种特殊的麻烦有时并不会消失(当我在&#34; en-US&#34;瑞士国家广播公司的服务器。)

然后你需要创建一个新的基类并从System.Web.UI.Page继承,并且不允许在构造函数中使用override(,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
{

}

这是打击它的最快方法,因为你可以在源代码中进行搜索和替换。
拥有一个共同的基页无论如何都很有用。

另外,请注意这个&#34;功能&#34;也可以影响类库(string.Format(Insert INTO TABLE WHATEVER '{0}', dateTime.ToString())),因此在页面上设置它可能是不够的(如果当前日期<13,它甚至可能只是在数据库中保存垃圾,而不是返回一个错误 - 加上它也可以在select上检索垃圾!)

答案 2 :(得分:0)

实际上,默认使用浏览器指定的语言首选项可能会更好,这样您就可以根据用户偏好获得正确的文化。

 <globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"/>