将一种格式的字符串日期转换为另一种格式的Date对象

时间:2013-04-08 09:41:57

标签: java string date

我的输入日期为字符串,格式为 dd / MM / yyyy

现在我想将其转换为格式为 yyyy-MM-dd

的Date对象

目前我在做

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
Date dateObject = null;
  try {
    String date2 = formatter2.format(formatter.parse(date));
    dateObject = formatter2.parse(date2);
  }

输入是:“04/02/2013”​​

但是我的约会对象出现了 - > Mon Feb 04 00:00:00 IST 2013

所需的输出是:2013-02-04(不在字符串中,但作为日期对象)

5 个答案:

答案 0 :(得分:3)

日期没有特定的输出格式。解析第一个日期时,就是日期。只需存储它,当您需要将其输出为所需格式时,请使用第二个SimpleDateFormat

修改

通过“存储它”,我的意思是保留对它的引用,直到你需要它以你想要的字符串格式表示。

答案 1 :(得分:1)

您已经在date2中获得了格式化日期。你无需再解析它。

String date2 = formatter2.format(formatter.parse(date));
//dateObject = formatter2.parse(date2); // Not needed

System.out.println(date2);

答案 2 :(得分:1)

我认为你在这里提出错误的问题。正如注释中所述,您需要使用此字符串格式来查询数据库,因此,由于JDBC使用java.sql.Date对象,因此要严格执行此操作并将java.util.Date对象转换为JDBC托管类型并直接使用它(无需担心格式化。)

尝试这样的事情:

String stmt = "select field from table where dateColumn = ?";
PreparedStatement st = connection.prepareStatement(stmt);
st.setDate(1, new java.sql.Date (yourJavaUtilDateObj);
ResultSet rs = st.executeQuery();

应该适用于每个JDBC驱动程序。

答案 3 :(得分:0)

您的Date对象是正确的。日期包含有关日期的信息。

您已经拥有包含所需面具的日期的字符串:

String date2 = formatter2.format(formatter.parse(date));

尝试:

System.out.println(date2);

答案 4 :(得分:0)

这项工作对我来说:

public Timestamp convertStringToTimeStamp(String dateinString){
        final String OLD_FORMAT = "dd/mm/yyyy";
        final String NEW_FORMAT = "yyyy-mm-dd";

        String newDateString;

        SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
        Date d = null;
        try {
            d = sdf.parse(dateinString);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sdf.applyPattern(NEW_FORMAT);
        newDateString = sdf.format(d);

        return Timestamp.valueOf(newDateString+ " 00:00:00.00");
    }