我正在尝试将一个变量,以字符串格式存储在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相同的结果。
我可以在“尝试/捕获”中通过“转换”,但我确定还有其他更好的方法来解决这个问题... 谢谢你的帮助。
答案 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"