格式不是常数时的解析日期c#

时间:2013-11-12 07:08:59

标签: c# date

通常我会像这样解析日期

DateTime.Parse()
DateTime.ParseExact()

我处于用户运行exe并传递日期作为参数的情况。所以用户可以用各种格式给出日期,比如

dd/MM/yyyy
MM/dd/yyyy
dd-MM-yyyy
MM-dd-yyyy
yyyyMMdd

所以我必须解析那个日期。当日期格式是yyyyMMdd然后我就像这样的parisng日期DateTime.ParseExact(this.enddate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");

所以请指导我应该编写什么代码来解析日期格式的解析日期。感谢

4 个答案:

答案 0 :(得分:5)

我建议您对单一格式进行标准化。否则,如果您的日期可以通过不同的格式进行解析,则会遇到不明确的日期,但两者都代表不同的日期 例如: DD-MM-YYYY MM-dd-yyyy

答案 1 :(得分:1)

  

我应该编写什么代码来解析适用于任何日期格式的日期

作为技术答案,您可以通过包含所有可接受格式的字符串数组将多种格式传递给DateTime.TryParseExact()

但实际上,其他人已经指出,没有办法说明格式没有严格执行的月份和日期之间的区别。

一种可能的解决方案是让用户将日期作为三个单独的参数传递,每个参数都标记有某种指标,例如/y2013 /m11 /d12y:2013 m:11 d:12。您甚至可以像/y2013/m11/d12一样将它们混合在一起。然后你可以使用正则表达式来解析部分,甚至只是简单的旧字符串操作。

答案 2 :(得分:0)

没有内置的方法来解析适用于任何格式的日期。但是,您可以使用DateTimeFormatInfo轻松定义自己的格式,只要您提前知道格式,就可以将或多或少的格式转换为正确的日期。

答案 3 :(得分:0)

在每个主要网站中,您使用组合框输入日期/月/年的日期 或一些日期时间小部件。所以我没有理由使用文本框。如果你真的 需要,使用预定义的格式添加工具提示或水印并强制执行 用户。