Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Datetime.TryParse解析美国的字符串date时出现问题_C#_Date_Cultureinfo - Fatal编程技术网

C# 使用Datetime.TryParse解析美国的字符串date时出现问题

C# 使用Datetime.TryParse解析美国的字符串date时出现问题,c#,date,cultureinfo,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 (DateTi

我试图把一个变量,以字符串格式存储在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的结果相同

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

当你说结果是2011年11月15日时你在哪里看到的?在调试器中?调试器将根据您当前的区域性设置变量的格式(只需调用ToString)

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

e、 g


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

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

那么,最终结果是“10/15/2011”而不是“10/15/2011”?呃。。。他们是一样的…好吧,你明白了。。。我犯了一个小错误:)更正了“过期时间”?如何将区域性传递给out DateTime对象?@PetersLast你在用DateTime做什么?当您将其转换回sting时,需要将区域性传递给它。2011年11月15日出现在日期时间值dMyUSDateTime和TestedDateTime中。它最终显示在我的web应用程序上的Telerik日历控件文本框中。@PetersLast Ok,那么您真正的问题是,如何在Telerik的日历控件中将日期时间格式化为不同的区域性?试着问一个新问题,最后一次,最后一次。日期时间结构独立于区域性。2011年1月1日在所有文化中都是相同的日期。唯一的区别在于它的表现方式,也就是文化的介入。用于查看DateTime结构的任何应用程序都在应用区域性。Visual Studio的调试视图通常只调用ToString()来显示也将应用默认区域性的变量的值。我已经得到了字符串,这是我想要得到的变量DateTime(格式正确)。实际上,在DateTime dResult.ToShortDateString=“10/15/2011”中转换字符串sDate“10/15/2011”,而不是当前的“15/10/2011”。
string result = someDateTime.ToString("d", new CultureInfo("en-US"));
// result == "10/15/2011"