【问题标题】:C# DateTime.ParseExact 000+0000C# DateTime.ParseExact 000+0000
【发布时间】:2021-11-16 03:57:39
【问题描述】:

我试图在其他论坛或问题中找到答案,但我找不到我的问题的答案

我试图将字符串转换为日期时间

这是我的字符串:1999-12-31T23:00:00.000+0000

我正在使用这条线(在尝试了很多选项之后)

DateTime.ParseExact("1999-12-31T23:00:00.000+0000", "yyyy-MM-ddThh:mm:ss:000+ZZZZZ", CultureInfo.InvariantCulture)

谢谢你帮助我

【问题讨论】:

  • 这是一个无效的偏移量。 ISO8601 格式的偏移量必须采用hh:mm 格式。您会发现几个重复项询问如何转换此 invalid 日期,但唯一的方法是拆分字符串并分别解析日期时间和偏移量部分,或者注入缺少的 :
  • The docs explain how z behaves。最多只能有3个zs,

标签: c# .net datetime datetime-format


【解决方案1】:

不是 100% 确定,试试这个。

var str = "1999-12-31T23:00:00.000+0000";
var parts = str.Split('+');
var date = DateTime.Parse(parts[0]);
var offset = TimeSpan.Parse(parts[1]);
var dto = new DateTimeOffset(date, offset);

【讨论】:

  • 完美!非常感谢。
  • @Arlunily感谢您的确认 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 2020-10-14
  • 1970-01-01
相关资源
最近更新 更多