繁体   English   中英

C#-如何验证DateTime(将“ 20120713”或“ 120713”更改为“ 13.07.2012”)

[英]C# - How To Validate DateTime ( make “20120713” OR “120713” TO “13.07.2012” )

我正在尝试将EDI顺序(“ 20120713” / YYYYMMDD或“ 120713” / YYMMDD或什至没有点的其他日期,所以只是数字)中的DateTime解析为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 */ }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM