我得到的DateTimeOffset字符串为“ 2018-10-16T193850 + 0200” ,但我认为这不是标准格式。主要是“ +0200”部分不标准,因为它没有冒号。
我必须指定哪种格式来解析这样的DateTimeOffsets?谢谢!
答案 0 :(得分:3)
您可以使用ParseExact
:
DateTimeOffset offsetDate = DateTimeOffset.ParseExact(
"2018-10-16T193850+0200",
"yyyy-MM-dd'T'HHmmsszzzz",
DateTimeFormatInfo.InvariantInfo,
DateTimeStyles.None);
答案 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”部分,我的答案与蒂姆·施密特的答案相似。