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



我有一个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>

这不是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问题。

如果你想同时允许这两种日期模式,我建议你创建一个自定义转换器,它可以正确地完成任务。您可以在我对这个问题的回答中找到一个启动示例:如何根据多种模式验证输入日期?

相关内容

  • 没有找到相关文章

最新更新