我正在开发一个JSF和primefaces应用程序。在我的some.xhtml
文件中,我放了p: calendar
标签,我想将其默认值设置为当前日期(格式如:01-09-2014
)。我写过private Date startDateBean;
作为支持豆。当我不写下面的代码,只是分配private Date startDateBean = Calendar.getInstance();
它给我默认值(MON Sep 1 00:00:00 EST 2014
)但不是我真正想要的正确格式(01-09-2014
)。所以我的问题是如何以自定义格式(01-09-2014
)设置日期并将其分配给Date
对象private Date startDateBean = this.defaultDate();
(见下文:)以使用此(01-09-2014
)格式在客户端获取默认值。
我使用的是jdk 1.7。
private Date startDateBean = this.defaultDate();
private Date defaultDate() {
Date defaultDate = null;
try {
DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
defaultDate = sdf.parse(sdf.format(Calendar.getInstance().getTime()));
} catch (Exception e) {
e.printStackTrace();
}
return defaultDate;
}
您正在使用DateFormatter
正确解析日期(种类,见下文)但不再格式化以显示: -
sdf.format(defaultDate);
也就是说,输出时: -
System.out.println(sdf.format(defaultDate));
Date
对象仅保存实际日期,而不是有关如何格式化的信息或Date
中包含的哪些信息(秒,分钟,小时,星期几,月,月,年)。因此,使用DateFormatter
按照您希望显示的顺序仅选择要显示的部分。
另外
当你最初得到日期时: -
defaultDate = sdf.parse(sdf.format(Calendar.getInstance().getTime()));
你得到一个Date
对象(与Calendar.getInstance().getTime()
),使用你的String
(与DateFormatter
)将其转换为sdf.format()
然后使用你的DateFormatter
将它转换回Date
(与sdf.parse()
),你可以这样做: -
Date defaultDate = Calendar.getInstance().getTime();
您可以使用
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String displayDate = dateFormat.format(new Date());
这将以dd-MM-yyyy
格式为您提供格式化日期作为字符串