gpt4 book ai didi

c# - 在 C# 中解析 DateTimeOffset 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:03 25 4
gpt4 key购买 nike

我需要从多种格式的字符串中解析日期时间偏移量。失败的字符串之一是:08/12/1992 07.00.00 -05:00

现在,当我尝试解析它时,我使用:

DateTimeOffset.ParseExact("08/12/1992 07.00.00 -05:00", "dd/MM/yyyy HH:mm:ss zzz", CultureInfo.InvariantCulture)

它给出了一个FormatException:

"String was not recognized as a valid DateTime."

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

DateTimeOffset.ParseExact("08/12/1992 07.00.00 -05:00", "dd'/'MM'/'yyyy HH':'mm':'ss zzz", CultureInfo.InvariantCulture)

...或小写/大写字母或分隔符的其他排列,但我得到相同的错误。

谁能告诉我为什么上面的 ParseExact 行不起作用,以及如何更正它们?

编辑: 我尝试使用 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;
}

关于c# - 在 C# 中解析 DateTimeOffset 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com