我很好奇,什么是处理任何给定的语言不明确的日期字符串的最佳途径。当预验证用户输入是不是一种选择,应该如何MM / DD / YYYY日期被解析?

你会如何解析以下明确的日期和原因是什么(统计,文化等)?

<强> '1111900'如1900年1月11日[<强> M / DD / YYYY ]或1900年11月1日[<强> MM / d / YYYY ]

有帮助吗?

解决方案

除非你知道的语言/文化的格式是从哪里来的,你需要建立一个共同的日期格式到底是什么。

有一些所谓的语言环境无关的日期格式,我会推荐。 (YYYY-MM-DD)

这是不是使用或能够清楚哪些部分是年,月,日。 (DD MON YYYY或22 2003年4月)

请参阅:上日期格式的W3的视图

编辑:输入了错误的语言环境的中性日期格式

其他提示

根据软件是多么的重要,我会像对待任何明确的日期录入为无效的输入。你应该确保(在源),该日期输入你得到的是在一个合理的,无歧义的格式。如果您仍然设法得到类似“1111900”,然后输入不正确,有人显然绕过有效性莫名其妙检查代码,并且可能是你可以做的最正确的事情就是丢弃数据。

当然,如果这不是一个选项,让在日的即期并不重要,你总是可以猜测 - 但它的将会的是一种猜测。如果可能的话,虽然我肯定会避免这种情况。接受unsanitised输入不是一般最好的主意。

在唯一的方式知道在这样的系统年01月11和11月1日之间的差异将是通过上下文。否则,你需要去通过某种歧义的。该特定日期的格式将是病理破坏性压缩的一个很好的例子。

我的偏好时,在重要日期是使用提供的下拉列表或者这样,它总是在预期格式的日历。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top