0

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

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

谢谢大家。

4

2 回答 2

1

您应该对使用 的重载感兴趣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")

于 2012-07-27T11:00:43.693 回答
0

这应该适用于多种格式

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 */ }
于 2012-07-27T11:00:35.657 回答