来自jsp的响应采用以下格式:“mm / dd / yyyy hh:mm”,我想转换为db格式“yyyy-mm-dd hh:mm:ss”。
我试过这段代码:
public java.sql.Date getdateFormat(String datestring) throws ParseException {
String datestr = "";
try {
java.util.Date date = new SimpleDateFormat("mm/dd/yyyy hh:mm a",
Locale.ENGLISH).parse(datestring);
atestr = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date);
} catch (Exception e) {
e.printStackTrace();
}
return getDateFromString(datestr);
}
public java.sql.Date getDateFromString(String string) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date finalDate = null;
try {
finalDate = sdf.parse(string);
} catch (Exception e) {
e.printStackTrace();
}
return new java.sql.Date(finalDate.getTime());
}
答案 0 :(得分:1)
使用SimpleDateFormat时常见的错误是跳过文档并假设知道mm
表示月份和mm
表示分钟的时间。它没有。 mm
仅表示分钟。如果您想要使用月份MM
,如果您期望AM / PM,则仅使用a
,并且仅使用hh
12小时制。我希望你的格式应该是
MM/dd/yyyy HH:mm
和你的输出
yyyy-MM-dd HH:mm:ss
BTW你不应该转换为String来使用JDBC。使用日期更快,更不容易出错。
答案 1 :(得分:0)
如果你想要的只是Date
那么你就不需要了
atestr=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date);
只需在此阶段返回date
。
日期没有任何格式,基本上是一个数字。
答案 2 :(得分:0)
我基本上会这样做
String dateInString = "20140611";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date toDate = sdf.parse(dateInString);
sdf = new SimpleDateFormat("yyyy-MM-dd");
String tmpStr = String.format(sdf.format(toDate));
System.out.println(tmpStr);
答案 3 :(得分:-1)
我们可以通过以下方式获取日期
DateFormat dfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parseDate = dfm.parse(datestring);
现在parseDate
的格式为“yyyy-MM-dd HH:mm:ss”