【问题标题】:Get DateTime in this format: 2018-10-26T16:44:38+01:00以这种格式获取日期时间:2018-10-26T16:44:38+01:00
【发布时间】:2019-01-07 11:23:15
【问题描述】:

我无法将DateTime.UtcNow 正确格式化为2018-10-26T16:44:38+01:00。我已经尝试了下面的代码,但它的输出与我的预期不同:

DateTimeOffset.UtcNow.ToString("o");

有人有什么建议吗?

【问题讨论】:

标签: c# .net datetime string-formatting datetimeoffset


【解决方案1】:

这就是你想要的:

dt.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:sszzz")

请注意,24 小时格式必须使用大写“HH”。

微软官方documentation

【讨论】:

  • 您不能将zUtc 一起使用。仅限本地时区。
  • 确实,这就是为什么你必须首先使用 ToLocalTime()。
  • 是的,有那么一分钟我有点奇怪。是的,ToLocalTime 解决了这个问题!
【解决方案2】:

请随意查看可用字符串上的reference;像你问的那样直接回答你的问题:

string time = DateTime.UtcNow.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:sszzz");

以防万一提供的链接断开;我已经包含了我的答案中使用的格式字符串的描述:

dd   - Provides a double digit day 01 - 31.
HH   - Provides a double digit hour 00 - 23.
MM   - Provides a double digit month 01 - 12.
mm   - Provides a double digit minute 00 - 59.
ss   - Provides a double digit second 00 - 59.
yyyy - Provides a four digit year 0000 - 9999.
zzz  - Provides the hours and minutes offset from UTC.

【讨论】:

  • 您可能希望 HH 为小时,采用 24 格式(因为没有指定上午/下午)
  • @HansKesting 确实如此,但考虑到大多数人不使用 24 小时制,我选择了最常见的时间。感谢您指出这一点!
  • 这取决于“大多数人”在哪里?。而且(正如我刚刚看到的)OP 确实 使用 16 作为小时值 ...
  • @HansKesting 看看那个:)我会再次更新!
猜你喜欢
  • 2018-08-03
  • 2019-12-02
  • 1970-01-01
  • 2018-10-12
  • 2018-11-07
  • 2014-06-19
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
相关资源
最近更新 更多