0

我有一个输入日期作为字符串,格式为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(不是字符串,而是日期对象)

4

5 回答 5

3

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

编辑

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

于 2013-04-08T09:43:59.017 回答
1

您已经在date2. 您无需再次解析。

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

System.out.println(date2);
于 2013-04-08T09:43:59.140 回答
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 驱动程序。

于 2013-04-08T09:49:03.533 回答
0

Your Date object is correct. Date contains information about the date.

You already have the string with the date with your desired mask:

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

try:

System.out.println(date2);
于 2013-04-08T09:54:10.520 回答
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");
    }
于 2013-10-09T03:10:33.257 回答