gpt4 book ai didi

C# DateTime.TryParse 格式相同,日期不同

转载 作者:行者123 更新时间:2023-11-30 20:58:59 28 4
gpt4 key购买 nike

DateTime res;
String s;

s = "Wed, 28 Mar 2012 10:30:52 GMT";
DateTime.TryParse(s, out res);
Console.WriteLine(s + " => " + res);

s = "Fri, 15 May 2009 20:10:57 GMT";
DateTime.TryParse(s, out res);
Console.WriteLine(s + " => " + res);

输出:

Wed, 28 Mar 2012 10:30:52 GMT => 01/01/0001 00.00.00
Fri, 15 May 2009 20:10:57 GMT => 15/05/2009 22.10.57

为什么它只适用于某些日期?显然,我同时在同一台机器上运行了该代码。

最佳答案

我希望您所使用的文化的长日期格式可能只接受@VimalStan 建议的完整月份名称(您是否已确认这两种方式?)。

应该(恕我直言)也接受您正在尝试做的事情,但我知道各种文化都可能有这样的“怪癖”。例如,也许“mar”在某些文化中是模棱两可的? (虽然它在你的文化中可能并不模糊......也许一些代码已经从一种文化延续到另一种文化......我不知道文化规则是如何实现的,所以真的不知道这是否是即使是一个有效的建议...但我认为特定文化可能并不总是按预期行事的观点是公平的)。

使用http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture.aspx检查您的 .NET 上下文运行的文化。您可以通过控制面板(例如 Win 7 上的“区域和语言”)查看您的 Windows 用户配置文件运行的上下文,并查看那里的长日期格式.

您的示例在我的电脑上运行良好,长日期格式为“dddd, d MMMM yyyy”。我在澳大利亚,使用 en-au。

作为测试,尝试使用 en-au "English (Australia) 作为您的文化(通过控制面板,或根据上面的 currentculture 链接明确设置,在“Explicitly Setting the CurrentCulture Property "标题,然后测试您的代码是否按预期工作。

如果它按预期工作,我认为这意味着问题只是您的文化在解析方面比我的更严格(例如比您预期的)。因此,您可能需要确保通过完整的月份,或者根据此处的另一个答案使用 TryParseExact() 指定您自己的特定解析模式。

关于C# DateTime.TryParse 格式相同,日期不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15699510/

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