c# - 将字符串转换为不同的日期时间格式
问题描述
我的输入是一个烦人的自由文本,我需要在其中提取日期。该日期可能以任何异常格式出现。
例如。这是 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。
谁能分享一个可靠的方法来解决这些问题?
解决方案
没有单一的方法可以完成您正在尝试做的事情。具体来说,由于意图如此广泛,因此很难推断出用户的实际意思(例如,您如何区分月份和日期)。
根据您实现应用程序的方式,您需要实现输入验证。
对于控制台应用程序,我可以设想您使用以下内容:
if (DateTime.TryParse(line, out value))
{
// Parse-able date.
}
else
{
// Non-parseable date.
}
如果您正在构建 WPF 应用程序,则可以使用绑定验证。如果您正在构建 ASP.NET MVC 应用程序,您还可以实现模型验证。您的里程可能会有所不同 - 您绝对应该考虑限制用户可以为应用程序提供的内容。
推荐阅读
- spring-boot - 在 Spring Boot 中使用删除查询计划
- kubernetes - 重启 kubernetes Pod 后 Cloudbees Jobs 受到打击
- reactjs - 将 Material-UI 组件与 React-Spring 动画库集成
- javascript - 在排序时调整Angular ag-grid中的列标题大小
- c# - OpenQA.Selenium.NoSuchElementException :没有这样的元素
- python - Python Tkinter,小部件通常在大小和布局上出现不同(在不同的机器上,例如 Linux 或 Windows)。这不能解决吗?
- python - 如何使用 BeautifulSoup 获取特定数据?
- node.js - Bot Framework v4 节点:如何在基类中使用 userState
- cpuid - 将“Family X Model YY Stepping Z”翻译成唯一的处理器ID
- jasmine - Matcher 未检测到差异。错误?