【问题标题】:How can I format a DateTimeOffset to not have a colon in the timezone offset?如何将 DateTimeOffset 格式化为在时区偏移中没有冒号?
【发布时间】:2022-01-13 08:52:45
【问题描述】:

我正在阅读这篇关于日期时间相关格式支持的 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'一样投射它? (时区部分没有冒号)

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

【问题讨论】:

  • 那么问题出在空格字符上?
  • 喜欢this?
  • string result = $"{date:yyyy-MM-ddTHH:mm:sszz}{date.Offset:mm}";
  • 你不能偏移时区部分。
  • 无法复制:ideone.com/RifLYJ

标签: c# .net datetime datetime-format datetimeoffset


【解决方案1】:

似乎不可能(至少在 .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 分钟

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2016-09-12
    • 2020-07-06
    相关资源
    最近更新 更多