【问题标题】:Why would GetCultureInfo() format differently on different servers?为什么不同服务器上的 GetCultureInfo() 格式会不同?
【发布时间】:2018-03-13 01:14:54
【问题描述】:

我正在使用两台服务器(Server 2012 Std)和(Server 2016)。

在 2012 年我运行命令时:

[System.DateTime]::UtcNow.ToString([System.Globalization.CultureInfo]::GetCultureInfo("en-NZ"))

我得到了结果:

2018 年 13 月 3 日上午 12:49:55

当我在 Server 2016 上运行与上述相同的命令时,我会返回:

2018 年 13 月 3 日上午 12:48:42

它们的关键部分是 AM/PM 格式。我试图理解为什么这些返回不同的结果以及如何让服务器 2016 输出的格式与第一个相同。这是由于应用程序要求,我无权更改应用程序以格式化字符串,因此我必须以某种方式在操作系统级别解决此问题。

【问题讨论】:

  • 文化信息检索 Windows 中定义的文化。这些可能会随着最小的更新而改变。我个人认为 Server 2012 结果看起来有问题/不太清楚。这可能是他们修复的问题。
  • Btb,您可以在区域设置中查找您的 Windows 中定义的内容:support.office.com/en-us/article/…
  • 如果这不是一个编码问题,而是一个服务器设置问题,那么我不确定它是否是 SO 的主题。也许serverfault.com
  • @juharr 没有用于覆盖区域设置数据更改的服务器配置。所以我认为它不适合作为服务器管理问题。可以作为重复关闭 - 例如“创建自定义 CultureInfo”(stackoverflow.com/questions/12916940/…)或答案中链接的stackoverflow.com/questions/31888839/…

标签: c# windows powershell server cultureinfo


【解决方案1】:

查看Output of times (AM/PM) changed in Windows 10 when using DateTime.ToString("tt") 了解有关此问题的一些讨论。

您似乎无法在不更改应用程序代码的情况下解决此问题。

【讨论】:

  • 你说的“修复这个”是什么意思
【解决方案2】:

我发现了同样的问题,我可以通过使用以下代码来解决这个问题。不确定这是否是您要找的。​​p>

[System.DateTime]::UtcNow.ToString("dd/MM/yyyy hh:mm:ss tt")

【讨论】:

  • 很遗憾,我无法更改应用程序中的代码或操作 GetCultureInfo() 方法输出的字符串。
  • 啊,我明白了。 Robert 概述的讨论中提到的唯一其他选择是更改操作系统处理 AM/PM 符号的方式。当然,这需要更改操作系统中的时间设置。如果您在随机/未列出的服务器上使用该应用程序,这可能不是一个可行的解决方案。使用该应用程序更改每个服务器的时间设置似乎也是一项激烈的措施。
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 2022-10-17
  • 2013-09-07
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多