如何更改以下日期的日期格式
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));
答案 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.Date
,java.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))