Datetime 解析不明确的日期(独立于语言)

Datetime 解析不明确的日期(独立于语言),datetime,parsing,date,text-parsing,Datetime,Parsing,Date,Text Parsing,我很好奇,在任何给定的语言中,处理不明确的日期字符串的最佳方法是什么。如果无法预先验证用户输入,应如何解析MM/dd/YYYY日期 您将如何解析以下含糊不清的日期以及原因(统计、文化等) '1111900'从1900年1月11日[月11日/YYYY]或1900年11月1日[MM/d/YYYY]?除非您确切知道格式来自何种语言/文化,否则您需要建立一个通用的日期格式 我推荐一种称为区域设置中性日期格式的格式。(YYYY-MM-DD) 要么用它,要么弄清楚年、月、日是哪一部分。(2003年4月22日

我很好奇,在任何给定的语言中,处理不明确的日期字符串的最佳方法是什么。如果无法预先验证用户输入,应如何解析MM/dd/YYYY日期

您将如何解析以下含糊不清的日期以及原因(统计、文化等)


'1111900'从1900年1月11日[月11日/YYYY]或1900年11月1日[MM/d/YYYY]?

除非您确切知道格式来自何种语言/文化,否则您需要建立一个通用的日期格式

我推荐一种称为区域设置中性日期格式的格式。(YYYY-MM-DD)

要么用它,要么弄清楚年、月、日是哪一部分。(2003年4月22日星期一至星期一)

请参阅:关于日期格式


编辑:错误输入了与语言环境无关的日期格式

根据软件的重要性,我会将任何不明确的日期输入视为无效输入。你应该确保(从源头上)你得到的日期输入是合理的、不含糊的格式。如果您仍然设法获得类似“1111900”的信息,那么输入是不正确的,显然有人以某种方式绕过了有效性检查代码,并且您可以做的最正确的事情可能是丢弃数据


当然,如果这不是一个选项,而且约会地点也不重要,你可以一直猜测——但这将是一个猜测。不过,如果可能的话,我肯定会避免这样做。一般来说,接受未初始化的输入不是最好的办法。

在这样的系统中,了解1月11日和11月1日之间差异的唯一方法是通过上下文。否则,您需要进行某种消歧。这种特殊的日期格式将是病理破坏性压缩的完美例子。

当重要的日期是使用“提供”下拉列表或日历时,我的首选方式总是以预期的格式出现。

为什么不按照建议的YYYY-MM-DD?YYYY-MM-DD也可以轻松排序。