如何将 DateTimeOffset 格式化为时区偏移量中没有冒号?

How can I format a DateTimeOffset to not have a colon in the timezone offset?

我正在阅读这篇关于 DateTime 相关格式支持的 MSDocs 文章 https://docs.microsoft.com/en-us/dotnet/standard/datetime/system-text-json-support#support-for-the-iso-8601-12019-format

我试图将日期时间转换为这种格式的字符串时区部分没有冒号:

2021-01-01T14:30:10+0030

我想将此 datetimeoffset 转换为字符串。我使用这种格式:

yyyy-MM-ddTHH:mm:sszzz

但是 ToString("yyyy-MM-ddTHH:mm:sszzz") 方法的输出是:

2021-01-01T14:30:10+00:30

它有 冒号 (:) 登录时区部分。 我怎样才能像'2021-01-01T14:30:10+0030'一样投射它? (时区部分没有冒号)

我可以格式化时区部分吗?

似乎不​​可能(至少在 .Net 6 中)为 DateTimeOffset 获取 格式字符串 以获得所需的表示。但是,您可以尝试组合两种格式:date(类型DateTimeOffset)和整数Offset(类型TimeSpan )

string result = $"{date:yyyy-MM-ddTHH:mm:sszz}{date.Offset:mm}"; 

这里我们合并

  1. date:date:yyyy-MM-ddTHH:mm:sszz - date 最多偏移 小时
  2. date.Offset:mm - Offset 分钟