首页 > 解决方案 > 将字符串转换为不同的日期时间格式

问题描述

我的输入是一个烦人的自由文本,我需要在其中提取日期。该日期可能以任何异常格式出现。

例如。这是 9.9.12 日期
这是 9912 日期
这是 0992012 日期
任何可能的格式。

dMy ddMMyy ddMMyyyy Mdyy 等等。

我能够验证文本是否为 ddMMy* 的日期格式,但不是任何其他的。我正在查看此https://www.c-sharpcorner.com/blogs/date-and-time-format-in-c-sharp-programming1链接以查看可能的其他格式,但我没有得到任何线索。

像下面的日期格式这样写的方法是正确的吗 - 9912?

Date.ParseExact(test.ToString,"dMy", Globalization.CultureInfo.InvariantCulture)

如果是,系统正在向我填充以下错误:

System.FormatException:字符串未被识别为有效的 DateTime。

谁能分享一个可靠的方法来解决这些问题?

标签: c#datetime

解决方案


没有单一的方法可以完成您正在尝试做的事情。具体来说,由于意图如此广泛,因此很难推断出用户的实际意思(例如,您如何区分月份和日期)。

根据您实现应用程序的方式,您需要实现输入验证。

对于控制台应用程序,我可以设想您使用以下内容:

if (DateTime.TryParse(line, out value))
{
   // Parse-able date.
}
else
{
   // Non-parseable date.
}

如果您正在构建 WPF 应用程序,则可以使用绑定验证。如果您正在构建 ASP.NET MVC 应用程序,您还可以实现模型验证。您的里程可能会有所不同 - 您绝对应该考虑限制用户可以为应用程序提供的内容。


推荐阅读