【问题标题】:DateTime.Now Date Format and Windows SettingsDateTime.Now 日期格式和 Windows 设置
【发布时间】:2015-01-09 19:14:52
【问题描述】:

我有一个使用 DateTime.Now 的 C# 编写的控制台应用程序。将 Windows 区域设置为“英语(美国)”,短日期输出为 M/d/yyyy。我的应用程序实例在文化格式设置为“英语(加拿大)”且短日期格式设置为 dd/MM/yyyy 的机器上运行。由于我希望跨不同服务器的应用程序保持一致,因此我将 Windows 区域设置中的短日期格式更改为 M/d/yyyy。但是,我的应用程序仍将 DateTime.Now 输出为 dd/MM/yyyy。我的应用程序是否需要更改其他内容才能以我指定的格式输出?

我在不同的地方都这样做,但这里有一个例子:

TimeZoneInfo customTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime thisTime = TimeZoneInfo.ConvertTime(DateTime.Now, customTimeZone);
//The below output is not formatted how the Windows Region short date is specified.
Console.Writeline(thisTime);

在这种情况下,我的 DateTime 未按照 Windows 区域设置中指定的格式设置。

【问题讨论】:

  • 只需强制执行您喜欢的格式。
  • 请展示一些执行输出的实际代码。我完全赞成 phadaphunk,更改本地设置可能不是正确的方法。
  • 是的,可以。但是,我不明白为什么更改 Windows 设置不会强制执行我指定的日期格式。
  • 该代码没有格式化日期时间,而是更改了时区。在您打印的位置显示代码。

标签: c# datetime globalization


【解决方案1】:

您可以在应用程序启动时更改当前线程的文化,如下所示。这会影响日期格式、货币格式等。

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

更多信息请参见MSDN: Globalization(参见日期和时间部分)。

【讨论】:

    【解决方案2】:

    如果您可以将日期作为字符串处理,我不建议您使用这些设置来解决这个问题。你应该使用这样的东西:

    DateTime.Now.ToString("MM\/dd\/yyyy")
    

    这样您就可以独立于区域设置完全控制输出。

    【讨论】:

    • DateTime.ToString("MM/dd/yyyy") 将使用特定于文化的日期分隔符 - 例如去DE文化的时期。最好明确指定 CultureInfo.InvariantCulture,或转义“/”字符 - 例如"MM\/dd\/yyyy".
    【解决方案3】:

    首先,对@phadaphunk 的答案稍作修正:一行

    DateTime.Now.ToString("MM\/dd\/yyyy");
    

    将导致错误:“无法识别的转义序列”。所以,它可以被纠正为

    DateTime.Now.ToString(@"MM\/dd\/yyyy");
    

    如 MSDN 文章 http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx 中所述,指定 DateTime 格式的更通用方法如下:

    String.Format("{0:MM/dd/yyyy}",DateTime.Now);
    

    @Joe 建议明确指定 CultureInfo.InvariantCulture,或 @async 建议将线程特定 CurrentCulture 设置为 CultureInfo("en-US")

    希望这会有所帮助。最好的问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      相关资源
      最近更新 更多