无法使用Datetime.TryParse解析我们的字符串日期

时间:2011-09-30 13:29:53

标签: c# date cultureinfo

我正在尝试将一个变量,以字符串格式存储在dateTime变量中。

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
System.Globalization.DateTimeFormatInfo usaDateFormatInfo = culture.DateTimeFormat;

string sDataStored = "10/15/2011";
if (DateTime.TryParse(sDataStored , usaDateFormatInfo,       System.Globalization.DateTimeStyles.None, out TestedDateTime))
DateTime dMyUSDateTime = TestedDateTime;

不幸的是,我的变量的最终结果不是:“10/15/2011”而是“15/10/2011”(法国文化,这是当前应用程序的当前文化)。

与TryParseExact相同的结果。

我可以在“尝试/捕获”中通过“转换”,但我确定还有其他更好的方法来解决这个问题... 谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

当你说结果是15/11/2011你在哪里看到的?在调试器中?调试器将根据您当前的文化格式(通过调用ToString)格式化变量。

DateTime对象未存储从中解析的文化。当您将文化转换回字符串时,您需要将文化传递给它,以便根据美国文化进行格式化。

e.g。

dMyUsDateTime.ToString(usaDateFormatInfo)

答案 1 :(得分:3)

DateTime没有附加文化。如果要显示DateTime值,则需要指定要使用的日期/时间格式。如果未指定格式(或在Visual Studio调试器中查看值),则使用当前线程的当前区域性。

string result = someDateTime.ToString("d", new CultureInfo("en-US"));
// result == "10/15/2011"
相关问题