无法将日期类型YY正确转换为YYYY(Y2K问题)

时间:2011-06-24 13:01:51

标签: datetime jsf date seam

我有一个具有日期字段的Seam / JSF应用程序。

当用户输入01.01.11时,它会将其解释为01.01.0011,这显然是不正确的。正确的值应为01.01.2011

有人遇到过这个吗?你是怎么解决的? xhtml如下:

<h:inputText value="#{budgetHandler.grantedFrom}">
  <s:convertDateTime type="date" pattern="dd.MM.yyyy"/>
</h:inputText>

1 个答案:

答案 0 :(得分:0)

这不是Y2K问题。这只是一个用户错误。您要求用户输入dd.MM.yyyy,但用户输入了dd.MM.yy。它只是表示为4位数年份的最后2位数。如果用户输入一个或三个数字作为年份,也会发生同样的情况。

如果您将 模式修改为dd.MM.yy,您会发现它适用于dd.MM.yy输入,正如您所期望的那样。

<s:convertDateTime type="date" pattern="dd.MM.yy"/>

然后11的一年被解释为2011,而不是1911。看,没有Y2K问题。

如果你想同时允许这两种日期模式,我建议你创建一个能够正确完成工作的自定义转换器。您可以在我对这个问题的回答中找到一个启动示例:how to validate input date against multiple patterns?