【问题标题】:ASP.NET Application is displaying american date formatsASP.NET 应用程序正在显示美国日期格式
【发布时间】:2012-11-04 07:45:38
【问题描述】:

我的一个开发应用程序今天开始显示美式格式的短日期,而我期待英式格式。

日期正在使用date.ToShortDateString()呈现

我已经检查了我的区域设置、键盘设置、浏览器设置和 web.config。这些都设置为英语(英国)或未更改。我也重启了好几次。

同一应用程序的移动版本、从同一开发服务器和同一网站(不同的网络应用程序)运行正常。

环境:

  • Windows 7 64 位
  • Visual Studio 2010 专业版
  • IIS 7.5

还有哪些地方可以更改可能影响日期显示的区域设置?

【问题讨论】:

    标签: asp.net iis windows-7 date-formatting


    【解决方案1】:

    来自 MSDN

    当前 DateTime 对象的值使用与当前线程区域性关联的 DateTimeFormatInfo.ShortDatePattern 属性定义的模式进行格式化。返回值与使用 ToString(String) 方法指定“d”标准 DateTime 格式字符串返回的值相同。

    您是否尝试过更改当前线程的文化?这也可以按页面设置 - http://msdn.microsoft.com/en-us/library/bz9tc508%28v=vs.85%29.aspx

    【讨论】:

      【解决方案2】:

      Windows 区域设置不会影响任何网站,除非网站被编程为从浏览器首选语言获取区域设置并将其应用于 ASP 站点

      web.config 中使用globalization 选项

      <globalization culture="es-AR" uiCulture="es" />
      

      global.aspxApplication_BeginRequest方法中设置值

      Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
          Dim lang As String = "es"
          If HttpContext.Current.Request.Path.Contains("/en/") Then
              lang = "en"
          ElseIf HttpContext.Current.Request.Path.Contains("/pt/") Then
              lang = "pt"
          ElseIf HttpContext.Current.Request.Path.Contains("/es/") Then
              lang = "es"
          End If
          Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang)
          Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang)
      End Sub
      

      【讨论】:

      • 这有效,但我认为这是解决症状而不是原因。其他应用程序在未设置此值的情况下正确获取 en-GB。
      • @MarkCooper:这取决于服务器或应用程序池的默认配置
      • 所以这些是我正在寻找的设置。我的“服务器”是一个 WIN7 开发者虚拟机,所以这些设置是在区域和语言中定义的。应用程序池文化在哪里定义?
      • 如果未指定,IIS 将获得不变文化(谁使用美国格式),但也许您(或其他人)正在使用 Cassini o IIS Express 作为 Web 服务器
      猜你喜欢
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 2017-05-28
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多