Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析C中的DateTimeOffset字符串#_C#_Parsing_Datetime_Datetimeoffset - Fatal编程技术网

C# 解析C中的DateTimeOffset字符串#

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。失败的字符串之一是: 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)
它给出了一个
格式异常

“字符串未被识别为有效的日期时间。”

我还可以尝试在分隔符中添加分隔符:

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)

格式字符串使用
作为时间部分的分隔符,但数据参数使用
作为分隔符。

这看起来不像区域性不变的日期-时间字符串。