4

我正在使用 primefaces 的日历组件。我在 VO 中有一个相应的字符串。在数据库中保存时,我需要将字符串转换为 java.sql.date。

html :

<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

Java获取sql日期的方法

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。但它转换为的日期是:Sat Apr 21 05:30:00 IST 2012。

  1. 上面写的f:convertDateTime标记是否有任何不正确之处。
  2. 如果没有,我怎样才能将此字符串转换为 sql 日期。无法理解应该给出什么格式。

谢谢, 希哈

4

2 回答 2

9

尝试

<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);
于 2012-04-20T10:53:53.053 回答
7

f:convertDateTime唯一将字符串转换对象,反之亦然。需要的对象p:calendar一个java.util.Date(它是value属性)。字符串是您在浏览器中看到的格式化日期!

Primefaces 日历会自动附加转换器。这就是为什么你patternp:calendar.

因此,您应该删除f:convertDateTimeDaniel 已经提出的附加内容。

然后从java.util.Dateto的转换java.sql.Date非常简单:

public java.sql.Date sqlDate(java.util.Date calendarDate) {
  return new java.sql.Date(calendarDate.getTime());
}
于 2012-04-20T11:28:10.203 回答