首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# -如何验证DateTime (将"20120713“或"120713”改为"13.07.2012“)

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

Stack Overflow用户
提问于 2012-07-27 18:54:41
回答 2查看 644关注 0票数 0

我正在尝试从EDI- DateTime ( "20120713“/ YYYYMMDD或"120713”/ YYMMDD,甚至其他不带点的日期,所以只是数字)解析到C#中类似"DD.MM.YYY“的有效日期。

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

谢谢大家。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-27 19:00:44

您应该对使用ParseExact的这种重载感兴趣,您可以将多种格式作为一个数组传递,它将尝试根据这些格式对其进行解析。(如果您可以控制这些格式并打算在此过程中使用一种格式,那就更好了)

代码语言:javascript
复制
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")

票数 1
EN

Stack Overflow用户

发布于 2012-07-27 19:00:36

这应该适用于多种格式

代码语言:javascript
复制
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 */ }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11686382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档