【问题标题】:Where does ASP.NET get its culture settings from?ASP.NET 从哪里获得文化设置?
【发布时间】:2009-06-10 13:28:02
【问题描述】:

在 ASP.NET 应用程序中,我将区域性设置为 lv-LV。一切都很好,但默认的短日期格式似乎是“yyyy.mm.dd”。客户希望它是“dd.mm.yyyy”(这实际上是 LV 标准)。 ASP.NET 从哪里获得特定文化的日期/时间设置?如何在不影响其他文化的情况下针对单一文化更改它们(应用程序应该是可本地化的)?

【问题讨论】:

    标签: asp.net datetime localization globalization


    【解决方案1】:

    我曾经遇到过类似的问题,用以下方法解决了:

    DateTimeFormatInfo dtfi = (DateTimeFormatInfo)Thread.CurrentThread.CurrentCulture.DateTimeFormat.Clone();
    dtfi.ShortDatePattern = "dd.MM.yyyy";
    dtfi.DateSeparator = ".";
    Thread.CurrentThread.CurrentCulture.DateTimeFormat = dtfi ;
    Thread.CurrentThread.CurrentUICulture.DateTimeFormat = dtfi;
    

    这样您就可以保留除日期格式之外的所有其他区域设置。

    这段代码实际上是在我们的 Page 基类中的 OnLoad 上运行的。我不太确定这是最好的方法。

    【讨论】:

    • 我也想到了类似的事情。仍然似乎以某种方式......错了。 :D 我不喜欢硬编码。也许有一些系统注册表项需要针对该文化或其他东西进行更改?
    • 问题在于,如果您的某些用户更喜欢 ISO 标准日期格式。
    【解决方案2】:

    .Net 从 DateTimeFormatInfo 类中获取特定文化的日期/时间设置。您可以使用已修改的 DateTimeFormatInfo 设置 CultureInfo 的 DateTimeFormat 属性。如果该文化是当前文化,那么您可以在 CurrentCulture 上设置它。无论哪种方式,这只会影响您创建的 CultureInfo,不会影响任何其他文化。 (对 CultureInfo.GetCultureInfo("lv-LV") 的任何调用都不会获取这些更改,因为这是一个只读副本。)您不必将该 CultureInfo 传递给任何 DateTime 格式化方法(ToString、ParseExact ) - 您可以传递显式模式或 DateTimeFormatInfo。

    CultureInfo lvLV = new CultureInfo("lv-LV");
    
    DateTimeFormatInfo lvLVdtfi = (DateTimeFormatInfo) lvLV.DateTimeFormat.Clone();
    lvLVdtfi.ShortDatePattern = "dd.MM.yyyy";
    lvLV.DateTimeFormat = lvLVdtfi;
    
    DateTime.Now.ToString("d", lvLV);     // short date pattern from modified lv-LV CultureInfo
    DateTime.Now.ToString("d", lvLVdtfi); // short date pattern from modified DateTimeFormatInfo
    DateTime.Now.ToString("dd.MM.yyyy");  // explicit short date pattern
    

    如果 lv-LV 是当前的 Windows 文化,那么您可以设置用户覆盖(使用 intl.cpl 区域和语言选项控制面板并自定义格式),框架会选择它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多