C# DateTime:解析未知格式

C# DateTime:解析未知格式,c#,datetime-format,C#,Datetime Format,以下代码将输出2018-10-03 16:40:50(而不是2018-03-10): 以下代码将正确解析日期(2018-03-10) 有没有办法在不知道确切格式的情况下正确解析此日期 服务器应用程序的当前区域性是en-ca(English Canada),我不知道要解析的字符串日期的确切格式。至少有没有一种方法可以解析日期,而不必在月和日之间进行奇怪的交换?听起来是一个简单的问题,但在阅读中浪费了很多时间,并尝试了这里找到的任何东西 谢谢 最终使用具有已知格式的数组列表的TryParseExac

以下代码将输出2018-10-03 16:40:50(而不是2018-03-10):

以下代码将正确解析日期(2018-03-10)

有没有办法在不知道确切格式的情况下正确解析此日期

服务器应用程序的当前区域性是en-ca(English Canada),我不知道要解析的字符串日期的确切格式。至少有没有一种方法可以解析日期,而不必在月和日之间进行奇怪的交换?听起来是一个简单的问题,但在阅读中浪费了很多时间,并尝试了这里找到的任何东西

谢谢

  • 最终使用具有已知格式的数组列表的TryParseExact。(虽然很难看,但很管用)
  • 无法检测MM-DD-YYYY与DD-MM-YYYY。已知限制(我们的应用程序最终不支持此格式)

谢谢

您打算如何解释“2018年3月9日”-是2018年9月3日还是2018年3月9日?我想您想要的是
datetime.ToString(“yyy-MM-dd”)MM/DD/YY似乎是一种非常不寻常的格式。。。无法计算出假设10是2018年3月10日的月份在哪里???数据源中实际使用了多少种格式?也许可以用TryParse和styles?看,简短的回答是否定的。你需要知道日期的文化,你可以用它来产生结果。一个例子;我们知道,英国是以日、月、年为单位的,所以
DateTime.Parse(“2018年3月10日下午4:40:50”,System.Globalization.CultureInfo.GetCultureInfo(“en-gb”)正确解析它。
DateTime dateTime = new DateTime();
DateTime.TryParse("10/03/2018 4:40:50 PM", out dateTime );
MessageBox.Show(dateTime.ToString());
dateTime = DateTime.ParseExact("10/03/2018 4:40:50 PM", "dd/MM/yyyy h:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
MessageBox.Show(dateTime.ToString());