如何解析此DateTimeOffset?

时间:2018-10-18 12:00:07

标签: c# .net date datetimeoffset

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

我必须指定哪种格式来解析这样的DateTimeOffsets?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用ParseExact

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

阅读:Custom Date and Time Format Strings

答案 1 :(得分:0)

不幸的是,将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”-当地时间

编辑
除了“ K”部分,我的答案与蒂姆·施密特的答案相似。