我一直在研究日期格式和时区设置,但仍然无法获得我在managedBean中选择的正确值。我尝试了不同的日子,几个月和几年没有好的结果,因为它似乎是设定小时而不是月份,将1月保持为选择的月份,无论我选择哪一个。由于我没有看到类似的问题,我决定在这里发布我的问题。任何帮助表示赞赏。
这是我的JSF页面中的代码:
<p:calendar pattern="dd-mm-yyyy" locale="fr" value="#{modBean.dateEmp}">
<h:outputScript name="js/fr.js"/>
<p:ajax event="dateSelect" process="@this"/>
</p:calendar>
这是我的managedBean中的代码:
public void setDateEmp(Date dateEmp)
{
System.out.println("dateEmp param : "+dateEmp);
DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT, Locale.FRANCE);
df.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
String dateFormate=df.format(dateEmp);
System.out.println("dateformate : "+dateFormate);
try
{
this.dateEmp=df.parse(dateFormate);
System.out.println(this.dateEmp);
}
catch (ParseException e)
{
e.printStackTrace();
}
}
最后,这就是我在控制台中获得的三张照片(例如我选择的“2014年8月1日”):
dateEmp param : Wed Jan 01 00:08:00 CET 2014
dateformate : 01/01/14
Wed Jan 01 00:00:00 CET 2014
有人可以帮忙吗?
答案 0 :(得分:2)
你的错误在pattern
。
<p:calendar ... pattern="dd-mm-yyyy" />
pattern
基于SimpleDateFormat
规则。如果您仔细阅读javadoc,则会发现mm
代表分钟,而非数月。
几个月来,您需要MM
。
<p:calendar ... pattern="dd-MM-yyyy" />