c# - DateTimeOffset.ToString() 格式化输出在环境中不一致
问题描述
我正在格式化与 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 使用.
等。(有关更多信息,请参见此处。)
为确保字符串始终使用字符进行格式化/
,您需要对它们进行转义:
date.ToString(@"yyyy\/MM\/dd")
或者
date.ToString("yyyy'/'MM'/'dd")
推荐阅读
- visual-studio-code - Wolfram 语言服务器 - VSCode
- python - 使用 pandas.cut 分割连续变量,但它正在跳过值?
- html - 尽管我在 Opera 浏览器中重置了所有默认样式,但如何删除页脚周围的白色边框
- caching - 如何计算缓存大小
- java - 有没有人可以帮助我进行脉冲星性能?
- lingo - 如何用术语写一个 t 减一的约束
- ios - SwiftUI - MenuPickerStyle 不起作用,但任何其他样式都有效
- c++ - C++ 逻辑错误:无法打印方形图案
- mysql - CMD 中的 mysql.exe 刚刚开始出现“此应用程序无法在您的电脑上运行”错误
- python - 如何在 PYTHON 中使用循环或其他进程在新列表中附加两个字符串值?