DateTimeOffset.ToString() 格式的输出在环境中不一致

DateTimeOffset.ToString() formatted output not consistent across enviros

我正在格式化日期以便与 Moneris 的定期计费集成。该请求需要格式为“yyyy/MM/dd”的开始计费日期。简单的任务和“它在 Dev 中工作”。

当我将 API 代码发布到我们的暂存环境时,提交失败(Moneris 出现了一个非常无助的错误,“系统或数据问题。请重试。”)。我已经确定它实际上是有问题的开始日期的日期格式。

在 Dev 中,输出如上所示,但是,在暂存中,输出格式为“yyyy-MM-dd”。这打破了提交。我什至用正确的格式硬编码了一个值,它成功了。所以我们知道输出的格式是有问题的。

我还没有 运行 解决过 DateTime 上 ToString("blah") 的任何其他实例的这个问题。它与 DateTimeOffset 有关吗?为什么格式会偏离指示?

API 是 C# Asp.NetCore 3 解决方案。 开发环境:Windows 10 Pro 暂存环境:Windows Server 2019 Standard

在自定义 DateTime 格式字符串中,未转义的 / 表示 日期分隔符 ,这是特定于文化的。如果计算机 运行 您的程序配置了 en-US 文化,那么分隔符就是您所期望的 /。但是 ar-DZ 使用 -,tr-TR 使用 .,等等(请参阅 here 了解更多信息。)

要确保字符串 始终 格式为 / 个字符,您需要对它们进行转义:

date.ToString(@"yyyy\/MM\/dd")

date.ToString("yyyy'/'MM'/'dd")