如何将格式化日期转换为日期对象Java

时间:2014-09-01 11:22:43

标签: java date jsf primefaces calendar

我正在开发一个JSF和primefaces应用程序。在我的some.xhtml文件中,我放置p: calendar标记,我想将其默认值设置为当前日期(格式为:01-09-2014)。我写了private Date startDateBean;作为支持bean。当我不写下面的代码,只是分配 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;
}

2 个答案:

答案 0 :(得分:0)

您正在使用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()),使用StringDateFormatter)将其转换为sdf.format(),然后使用{ {1}}将其转换回DateFormatterDate),当你可以做的时候: -

sdf.parse()

答案 1 :(得分:0)

你可以使用

DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String displayDate = dateFormat.format(new Date());

这将为您提供格式为dd-MM-yyyy的格式化日期作为字符串