C# 解析C中的DateTimeOffset字符串#
我需要从多种格式的字符串中解析DateTimeOffset。失败的字符串之一是: 1992年12月8日07.00.00-05:00 现在,当我尝试解析此内容时,我使用:C# 解析C中的DateTimeOffset字符串#,c#,parsing,datetime,datetimeoffset,C#,Parsing,Datetime,Datetimeoffset,我需要从多种格式的字符串中解析DateTimeOffset。失败的字符串之一是: 1992年12月8日07.00.00-05:00 现在,当我尝试解析此内容时,我使用: DateTimeOffset.ParseExact(“08/12/1992 07.00.00-05:00”,“dd/MM/yyyy HH:MM:ss zzz”,CultureInfo.InvariantCulture) 它给出了一个格式异常: “字符串未被识别为有效的日期时间。” 我还可以尝试在分隔符中添加分隔符: DateT
DateTimeOffset.ParseExact(“08/12/1992 07.00.00-05:00”,“dd/MM/yyyy HH:MM:ss zzz”,CultureInfo.InvariantCulture)
它给出了一个格式异常
:
“字符串未被识别为有效的日期时间。”
我还可以尝试在分隔符中添加分隔符:
DateTimeOffset.ParseExact(“08/12/1992 07.00.00-05:00”,“dd'/'MM'/'yyyy HH':'MM':'ss zzz”,CultureInfo.InvariantCulture)
…或其他小写/大写字母或分隔符的排列,但我得到相同的错误
有人能告诉我为什么上面的精确行不起作用,以及如何纠正它们吗
编辑:我尝试使用LINQ查询将冒号替换为点(:->)。显然,这没有正常工作-感谢您的回复。您的实际日期(实际时间)字符串用点
从分钟到秒分隔小时,因此您的格式必须执行相同的操作:
DateTimeOffset.ParseExact("08/12/1992 07.00.00 -05:00",
"dd/MM/yyyy HH.mm.ss zzz", CultureInfo.InvariantCulture)
// ^ ^
// | |
如果数据中有多种字符串格式,可以执行以下操作:
public static DateTimeOffset Parse(string str)
{
string[] formats =
{
"dd/MM/yyyy HH.mm.ss zzz",
"dd/MM/yyyy HH:mm:ss zzz"
// ... possibly more ...
};
var dto = new DateTimeOffset();
if (!formats.Any(f => DateTimeOffset.TryParseExact(str, f, CultureInfo.InvariantCulture, DateTimeStyles.None, out dto)))
{
throw new ArgumentException("Unrecognized date format");
}
return dto;
}
在声明中
DateTimeOffset.ParseExact("08/12/1992 07.00.00 -05:00",
"dd/MM/yyyy HH:mm:ss zzz",
CultureInfo.InvariantCulture)
格式字符串使用
:
作为时间部分的分隔符,但数据参数使用
作为分隔符。这看起来不像区域性不变的日期-时间字符串。