【问题标题】:Primefaces Calendar component & date conversionsPrimefaces 日历组件和日期转换
【发布时间】:2012-04-20 10:08:06
【问题描述】:

我正在使用 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(字符串)的值是:Sat Apr 21 05:30:00 IST 2012

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

  1. 上面写的 f:convertDateTime 标签有什么不正确的地方吗?
  2. 如果没有,我如何将此字符串转换为 sql 日期。无法理解应该给出什么格式。

谢谢, 希哈

【问题讨论】:

  • 尝试不使用

标签: jsf-2 primefaces


【解决方案1】:

试试

<p:calendar value="#{articlePromo.startDate}"
    id="vendorStartDateInputTxt" pattern="dd/MM/yyyy" mode="popup" showOn="button">
</p:calendar>

其中startDatejava.util.Date 对象

另外,如果你想格式化 Date 对象,你可以使用 SimpleDateFormat :

DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
String s=df.format(startDate);

【讨论】:

    【解决方案2】:

    f:convertDateTime 仅将 String 转换为 Object,反之亦然。 p:calendarObject 必须是 java.util.Date(它是 value 属性)。 String 是您在浏览器中看到的格式化日期!

    Primefaces 日历会自动附加转换器。这就是为什么你在p:calendar 中有pattern 属性。

    因此,您应该删除 Daniel 已经提出的额外 f:convertDateTime

    那么从java.util.Datejava.sql.Date的转换就很简单了:

    public java.sql.Date sqlDate(java.util.Date calendarDate) {
      return new java.sql.Date(calendarDate.getTime());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多