是否有可能在Java中获取格式化的日期对象

时间:2013-04-24 06:24:04

标签: java spring jsf date

     SimpleDateFormat formatter= 
      new SimpleDateFormat("yyyy MMM dd");
     String dateNow = formatter.format(rs.getDate("ExpirationDate").getTime());
System.out.println("Date in String: "+dateNow);
     expDate = formatter.parse(dateNow);
System.out.println("expDate: "+expDate);

以下是我尝试将日期格式化为2013 Apr 26格式的代码。现在SimpleDateFormat#format方法返回格式化的字符串,但我需要一个具有所需格式的java.util.Date对象?是否有可能注意:实际上我需要日期对象,因为我必须在我的JSF页面上打印它,当我尝试在JSF上打印时,它显示了{{1}的defualt格式} java.util.Date而我想要Mon Mar 04 00:00:00 PKT 2013 另一件事是我发现一个注释是Spring框架,它是2013 Apr 26自己工作。在JSF 2.0中有任何类似这样的注释。
谢谢

3 个答案:

答案 0 :(得分:3)

Date类不存储有关格式化的任何信息。 Date类基本上仅存在private long milliseconds字段。您在打印Date实例时看到的格式只是its javadoc中明确指定的默认toString()格式。

在JSF上下文中,您需要<f:convertDateTime>代码才能在模型中的Date和HTML / HTTP中的String之间进行转换。这可以在UIOutputUIInput组件中使用。

<h:outputText value="#{bean.date}">
    <f:convertDateTime pattern="yyyy MMM dd" />
</h:outputText>
...
<h:inputText value="#{bean.date}">
    <f:convertDateTime pattern="dd-MM-yyyy" />
</h:inputText>

答案 1 :(得分:2)

没有格式化的Date对象。除了在toString方法中使用的格式之外,日期对象没有内在格式。您需要使用dateformat以特定方式格式化它们,就像您在问题中一样。

答案 2 :(得分:1)

你可以这样做:

public class MyDate extends Date{

    public String toString(){
        SimpleDateFormat formatter= 
        new SimpleDateFormat("yyyy MMM dd");
        String dateNow = formatter.format(this.getTime());
        String ans="";
        ans+="Date in String: "+dateNow;
        expDate = formatter.parse(dateNow);
        ans+="\n"+"expDate: "+expDate;
        return ans;
    }    
}

使用此功能,您可以使用MyDate,它将根据您的需要进行打印。

System.out.println(new MyDate());