我的输入日期为字符串,格式为 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(不在字符串中,但作为日期对象)
答案 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");
}