我正在使用primefaces的日历组件。我在VO中有一个相应的字符串。在保存数据库时,我需要将字符串转换为java.sql.date。
XHTML :
<p:calendar value="#{articlePromo.startDate}"
id="vendorStartDateInputTxt" pattern="dd/MM/yyyy" mode="popup" showOn="button">
<f:convertDateTime type="date" dateStyle="short" pattern="dd/MM/yyyy" />
</p:calendar>
startDate(String)的值为:Sat Apr 21 05:30:00 IST 2012
获取sql Date的Java方法
public static Date getSQLDate(String strDate) {
java.sql.Date sqlDate = null;
try {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date dt = formatter.parse(strDate);
sqlDate = new java.sql.Date(dt.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return sqlDate;
}
在转换日历的java.util.date时,我使用了模式dd / MM / yyyy。但它转换的日期是:星期六4月21日05:30:00 IST 2012。
谢谢, Shikha
答案 0 :(得分:8)
试
<p:calendar value="#{articlePromo.startDate}"
id="vendorStartDateInputTxt" pattern="dd/MM/yyyy" mode="popup" showOn="button">
</p:calendar>
其中startDate
是java.util.Date
对象
另外,如果要格式化Date对象,可以使用SimpleDateFormat:
DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
String s=df.format(startDate);
答案 1 :(得分:7)
f:convertDateTime
仅将 String 转换为 Object ,反之亦然。 p:calendar
的对象需要是java.util.Date
(value
属性)。 String 是您在浏览器中看到的格式化日期!
Primefaces日历会自动附加转换器。这就是pattern
中p:calendar
属性的原因。
因此,您应该删除Daniel已经提出的额外f:convertDateTime
。
然后从java.util.Date
到java.sql.Date
的转换非常简单:
public java.sql.Date sqlDate(java.util.Date calendarDate) {
return new java.sql.Date(calendarDate.getTime());
}