【发布时间】:2021-05-18 13:04:38
【问题描述】:
我有一个在 Windows Server 2008R2 和 2012R2 上正确运行的 Web 应用程序。现在我迁移到 Windows Server 2019。转换来自前端系统的一些日期时出现问题。使用的代码如下...
pool.ExpirationDate = DateTime.SpecifyKind(DateTime.Parse(routePrams["ddlExpirationDate"]), DateTimeKind.Local);
routePrams 中的值为“17 Mrz 2021”。这在旧系统上运行正常,但在新系统上运行不正常。在 Windows 2019 服务器上,我收到以下异常...
The string was not recognized as a valid DateTime. There is an unknown word starting at index 3.
我还在两个系统上尝试了以下 PowerShell 测试...
[datetime]::Parse("17 Mrz 2021")
在旧系统上,这可以正常工作,并返回“Mittwoch, 17. März 2021 00:00:00”。但是在新服务器上它也会返回异常。
我检查了所有服务器上的区域设置,似乎都是一样的。是否有其他设置影响日期转换?
我错过了什么?
【问题讨论】:
-
我在两个系统上都进行了测试。 [datetime]::Parse("17 März 2021") 在所有服务器上处理,但 [datetime]::Parse("17 Mrz 2021") 仅在旧服务器 (2008/12) 上正确处理。我在哪里可以告诉系统也正确处理短月份名称?
-
在 Powershell 中使用 (Get-culture).DateTimeFormat 可以看到,在系统上,以下条目是不同的... 新: AbbreviatedMonthGenitiveNames : {Jan., Feb., März, Apr....旧: AbbreviatedMonthGenitiveNames:{Jan, Feb, Mrz, Apr...}
-
你试过用
ParseExact代替Parse吗?我从不使用后者 - 始终指定您期望的格式! -
是的,我这样做。但是这个应用程序不是我开发的,它非常庞大。所以目前我需要一种方法来配置它,以便它在新服务器上工作。在代码中更改这一点将是一项艰巨的任务......
-
在控制面板中更改区域设置?
标签: .net windows datetime server