2009-01-14 94 views
1

我很好奇什么才是处理任何给定语言中含糊不清的日期字符串的最佳方法。当预先验证您的用户输入不是一个选项时,应如何解析MM/dd/YYYY日期?解析不明确的日期(与语言无关)

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

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

回答

1

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

我会推荐一种叫locale-neutral日期格式的东西。 (YYYY-MM-DD)

对于年份,月份和日期哪个部分是用途或明确的。 (DD MON YYYY或2003年4月22日)

请参阅:the w3's view日期格式。

编辑:输入了错误的区域中性日期格式

+0

按照建议,为什么不是YYYY-MM-DD? – Jimmy 2009-01-14 22:55:30

1

根据软件是多么的重要,我会像对待任何明确的日期录入为无效的输入。你应该确保(源头)你输入的日期是一个明智的,不含糊的格式。如果你仍然设法得到诸如“1111900”之类的东西,那么输入是不正确的,某人明显绕过了有效性检查代码,并且可能最正确的做法是放弃数据。

当然,如果这不是一个选项,并且获取日期点并不重要,那么您总是可以猜测 - 但它会是是一个猜测。如果可能的话,我肯定会避免这种情况。接受unsanitised输入通常不是最好的主意。

0

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

-1

我的偏好是当重要日期使用提供下拉式或日历时,它总是以预期的格式出现。