我正在尝试将数据库的字符串结果集的日期格式转换为标准格式,但使用simpledateformat会出现以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at CopyEJ.CopyEJ.main(CopyEJ.java:113)
RROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:838]
使用De-bug我发现变量time_stmp的值为“2013-04-19 17:29:06”我想投这个:
yyyyMMddhhmmss
这是代码:
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");
ResultSet rs_dt = cmd1.executeQuery(dt);
String time_stmp = null;
while (rs_dt.next())
{
time_stmp = rs_dt.getString(1);
}
StringBuilder ts = new StringBuilder( df.format( time_stmp ) );
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
您需要在此处使用DateFormat.parse()
,因为参数的类型为String
。另一方面,DateFormat.format()
用于将Date
个对象格式化为String
。
StringBuilder ts = new StringBuilder(df.format(df.parse(time_stmp)));
此外,建议将日期/时间数据保存为数据库中的TimeStamp
,而不是String
。
答案 1 :(得分:1)
您的简单DateFormat具有错误的日期模式。您必须使用DB的模式将其解析为日期,然后将其解析回String
。
试试这种方式:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
ResultSet rs_dt = cmd1.executeQuery(dt);
String time_stmp = null;
while (rs_dt.next())
{
time_stmp = rs_dt.getString(1);
}
Date d = null;
try {
Date d = df.parse(time_stmp);
} catch (ParseException ex) {
Logger.getLogger(Prime.class.getName()).log(Level.SEVERE, null, ex);
}
SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddhhmmss");
StringBuilder ts = new StringBuilder( df2.format(d) );
顺便说一下:
如果您希望输出为24h格式,则必须使用模式yyyyMMddHHmmss
答案 2 :(得分:0)
使用SimpleDateFormat.parse()
将字符串转换为日期。
使用SimpleDateFormat.format()
将日期转换为字符串。
现在一起:
SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat stdFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String s = stdFormat.format(dbFormat.parse(input));
您可以修改格式以满足您的需求。
答案 3 :(得分:0)
问题是,从数据库检索的日期格式为yyyy-dd-MM HH:mm:ss
,您尝试使用格式yyyyMMddhhmmss
你可以做这样的事情
String date = "2013-04-19 17:29:06";
Date d = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss").parse(date);
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMddhhmmss");
System.out.println(outputFormat.format(d));
答案 4 :(得分:0)
就像提到你需要使用
一样SimpleDateFormat.parse()
此外,如果你的字符串是
形式`2013-04-19 17:29:06`
您需要构建SimpleDateFormat以便像这样读取
`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times
答案 5 :(得分:0)
您好,您可以使用以下代码格式化您选择的日期(例如:yyyy-MM-dd HH:mm:ss)
Calendar calendar = Calendar.getInstance();
Date calDate = calendar.getInstance().getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Calendar Date: " + calDate);
System.out.println("Your Choice Date format (yyyy-MM-dd HH:mm:ss): "+dateFormat.format(calDate));
答案 6 :(得分:0)
这将有效
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd hhhh:mm:ss");
String time_stmp ="2013-04-19 17:29:06";
Date date=df.parse(time_stmp);
StringBuilder ts = new StringBuilder( df.format( date ) );
System.out.println(ts);