gpt4 book ai didi

.net - 为什么 DateTime.ParseExact() 不能使用 "9/1/2009"解析 "M/d/yyyy"

转载 作者:行者123 更新时间:2023-12-03 05:49:56 25 4
gpt4 key购买 nike

我有一个如下所示的字符串:“9/1/2009”。我想将其转换为 DateTime 对象(使用 C#)。

这有效:

DateTime.Parse("9/1/2009", new CultureInfo("en-US"));

但我不明白为什么这不起作用:

DateTime.ParseExact("9/1/2009", "M/d/yyyy", null);

日期中没有单词(例如“九月”),而且我知 Prop 体格式,所以我宁愿使用 ParseExact (而且我不明白为什么需要 CultureInfo)。但我不断收到可怕的“字符串未被识别为有效的日期时间”异常。

谢谢

一点后续。以下是 3 种有效的方法:

DateTime.ParseExact("9/1/2009", "M'/'d'/'yyyy", null);
DateTime.ParseExact("9/1/2009", "M/d/yyyy", CultureInfo.InvariantCulture);
DateTime.Parse("9/1/2009", new CultureInfo("en-US"));

这里有 3 个不起作用:

DateTime.ParseExact("9/1/2009", "M/d/yyyy", CultureInfo.CurrentCulture);
DateTime.ParseExact("9/1/2009", "M/d/yyyy", new CultureInfo("en-US"));
DateTime.ParseExact("9/1/2009", "M/d/yyyy", null);

那么,Parse() 适用于“en-US”,但不适用于 ParseExact...意外吗?

最佳答案

我怀疑问题出在格式字符串中的斜杠与数据中的斜杠。这是格式字符串中区分区域性的日期分隔符,最后一个参数 null 表示“使用当前区域性”。如果您转义斜杠(“M'/'d'/'yyyy”)您指定CultureInfo.InvariantCulture,则它将是好的。

如果有人有兴趣重现此内容:

// Works
DateTime dt = DateTime.ParseExact("9/1/2009", "M'/'d'/'yyyy",
new CultureInfo("de-DE"));

// Works
DateTime dt = DateTime.ParseExact("9/1/2009", "M/d/yyyy",
new CultureInfo("en-US"));

// Works
DateTime dt = DateTime.ParseExact("9/1/2009", "M/d/yyyy",
CultureInfo.InvariantCulture);

// Fails
DateTime dt = DateTime.ParseExact("9/1/2009", "M/d/yyyy",
new CultureInfo("de-DE"));

关于.net - 为什么 DateTime.ParseExact() 不能使用 "9/1/2009"解析 "M/d/yyyy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1368636/

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