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

Datetime 无法将日期类型YY正确转换为YYYY(Y2K问题),datetime,jsf,date,seam,Datetime,Jsf,Date,Seam,我有一个Seam/JSF应用程序,它有一个日期字段 当用户在01.01.11中键入时,它会将其解释为01.01.0011,这显然是不正确的。正确的值应为2011年1月1日 有人遇到过这个吗?你是怎么解决的?xhtml如下所示: <h:inputText value="#{budgetHandler.grantedFrom}"> <s:convertDateTime type="date" pattern="dd.MM.yyyy"/> </h:inputText&

我有一个Seam/JSF应用程序,它有一个日期字段

当用户在01.01.11中键入时,它会将其解释为01.01.0011,这显然是不正确的。正确的值应为2011年1月1日

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

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

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

如果您将模式固定为dd.MM.yy,您将看到它在dd.MM.yy输入中可以正常工作

<s:convertDateTime type="date" pattern="dd.MM.yy"/>
11岁被解释为2011年,而不是1911年。看,没有Y2K问题


如果您想同时使用这两种日期模式,我建议您创建一个自定义转换器,它可以正确地完成这项工作。你可以在我对这个问题的回答中找到一个开始的例子:

O no.y2k。。。。虽然它可能是一个很有用的lil,但似乎你的也应该工作。如果用户键入01.01.99怎么办?那是1999年还是2099年?时间机器!试一下yyy.DD.MM只是为了好玩?我不想要yyy.DD.MM。我要dd.MM.yyyy。另外,这也是同样的行为。谢谢。是的,这是一个用户错误。我想我可以引入一些javascript魔法来防止用户输入yy,而只输入yyyy。