将日期格式更改为查询数据库

时间:2012-05-16 10:40:12

标签: java hibernate

如何更改以下日期的日期格式

Thu May 17 00:00:00 GMT+05:30 2012

2012-05-17 00:00:00

我需要它作为日期而不是字符串。我正在使用

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("")

但它没有给出结果。 实际上我是在日期存储值。因此,当有人再次输入相同日期的数据时,它应该覆盖。 如果我将它作为日期对象传递给hibernate查询,它会给出结果。但不总是。在少数情况下它会再次插入,即它会在同一日期插入重复数据。 Befroe进入我正在添加一种方法来检查该日期是否存在数据。 criteria.add(Restrictions.eq("date", date));

4 个答案:

答案 0 :(得分:1)

String str ="Thu May 17 00:00:00 GMT+05:30 2012";

        DateFormat old_format = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy");
        Date newDate = null;
        try {
            newDate = old_format.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        DateFormat new_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = new_format.format(newDate);

        System.out.println("==>"+date);

答案 1 :(得分:1)

你不应该在这里做字符串操作。您在评论中说过它是数据库中的日期/时间字段,那么为什么代码中会涉及任何字符串转换?

在JDBC中将参数指定为java.sql.Datejava.sql.Timestamp或其他 - 然后以这种方式获取它们。不要进行字符串转换。忽略在工具中查询数据库时显示的任何格式 - 不要将结果视为具有“格式” - 它们只是日期。

答案 2 :(得分:0)

完全按照现状执行,但将parse("")更改为format(theDate)

theDate是您要格式化的Date对象

请参阅 http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html#format(java.util.Date

答案 3 :(得分:0)

String date = "Thu May 17 00:00:00 GMT+05:30 2012";
String oldFormat = "EEE MMM dd hh:mm:ss z yyyy";
String newFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf1 = new SimpleDateFormat(oldFormat);
SimpleDateFormat sdf2 = new SimpleDateFormat(newFormat);
sdf2.format(sdf1.parse(date))