[英]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.