解析不明确的日期(语言独立)
-
22-07-2019 - |
题
我很好奇,什么是处理任何给定的语言不明确的日期字符串的最佳途径。当预验证用户输入是不是一种选择,应该如何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日之间的差异将是通过上下文。否则,你需要去通过某种歧义的。该特定日期的格式将是病理破坏性压缩的一个很好的例子。
我的偏好时,在重要日期是使用提供的下拉列表或者这样,它总是在预期格式的日历。
不隶属于 StackOverflow