0

通常我这样解析日期

DateTime.Parse()
DateTime.ParseExact()

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

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

所以我必须解析那个日期。当日期格式为 yyyyMMdd 时,我会像这样处理日期DateTime.ParseExact(this.enddate, "yyyyMMdd", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");

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

4

4 回答 4

5

我建议您对单一格式进行标准化。否则,如果您有可以用不同格式解析的日期,但在这两种格式中表示不同的日期,您将遇到不明确的日期 例如:dd-MM-yyyy MM-dd-yyyy

于 2013-11-12T07:12:05.077 回答
1

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

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

但实际上,其他人已经指出,如果没有严格执行格式,就无法区分月份和日期。

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

于 2013-11-12T07:35:32.537 回答
0

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

于 2013-11-12T07:12:10.810 回答
0

在每个主要网站中,您都可以使用日/月/年的组合框或某些日期时间小部件输入日期。所以我看不到使用文本框的理由。如果您确实需要,请添加具有预定义格式的工具提示或水印并强制用户使用它。

于 2013-11-12T07:26:36.343 回答