如何解析这个 DateTimeOffset?

How to parse this DateTimeOffset?

我得到的 DateTimeOffset 字符串为 "2018-10-16T193850+0200",但我认为它是标准格式的 none。主要是“+0200”部分不标准,因为它缺少冒号。

我必须指定什么格式才能像这样解析 DateTimeOffsets?谢谢!

您可以使用 ParseExact:

DateTimeOffset offsetDate = DateTimeOffset.ParseExact(
    "2018-10-16T193850+0200",
    "yyyy-MM-dd'T'HHmmsszzzz",
    DateTimeFormatInfo.InvariantInfo,
    DateTimeStyles.None);

阅读:Custom Date and Time Format Strings

不幸的是,将 DateTimeInfo.TimeSeparator 设置为空字符串无济于事。

但是你可以使用DateTimeOffset.ParseExact如下:

DateTimeOffset date = DateTimeOffset.ParseExact("2018-10-16T193850+0200", "yyyy'-'MM'-'dd'T'HH''mm''ss''K", CultureInfo.InvariantCulture.DateTimeFormat);

诀窍是指定 'K' 格式说明符以接受各种偏移量。除了上述日期字符串之外,以下内容也将被正确解析:

“2018-10-16T193850Z”-UTC

“2018-10-16T193850”-当地时间

编辑
我的回答与 Tim Schmelter 的类似,除了 'K' 部分。