C# – 如何validation日期时间(制作“20120713”或“120713”至“13.07.2012”)

我正在尝试将日期时间从EDI-Order(“20120713”/ YYYYMMDD或“120713”/ YYMMDD或甚至其他日期没有点,所以只是数字)解析为有价值的日期,如C#中的“DD.MM.YYY”。

我不知道有多少不同的日期格式在不同的EDI订单中,所以我正在寻找一个可以应用于所有这些的解决方案。

谢谢大家。

您应该对使用ParseExact这个重载感兴趣,您可以将多种格式作为数组传递,并且它将尝试基于它们对其进行解析。(如果您可以控制格式并打算使用一个格式,这将是很好的)

 DateTime start = DateTime.ParseExact("20120713", new[] { "yyyyMMdd", "yyMMdd" }, CultureInfo.InvariantCulture, DateTimeStyles.None); DateTime end = DateTime.ParseExact("120713", new[] { "yyyyMMdd", "yyMMdd" }, CultureInfo.InvariantCulture, DateTimeStyles.None); 

对于你的输出你可以做start.ToString("dd.MM.yyyy")

这适用于多种格式

 DateTime Result = new DateTime(); string[] dateFormats = new string[]{ "YYYYMMDD", "YYMMDD", /*other formats you might need*/ }; if (dateFormats.Any(format => DateTime.TryParseExact("yourDate", format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out Result))) { /* Result contains the parsed DateTime and you can use it*/ } else { /* DateTime couldn't be parsed for any format you specified */ }