将字符串日期强制转换为新格式Java
我试图将数据库中的字符串resultset格式转换为标准格式,但使用SimpleDataFormat会产生以下错误:将字符串日期强制转换为新格式Java,java,date,simpledateformat,Java,Date,Simpledateformat,我试图将数据库中的字符串resultset格式转换为标准格式,但使用SimpleDataFormat会产生以下错误: 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) a
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,我发现可变时间_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 ) );
实现这一点的最佳方法是什么?您需要在此处使用
DateFormat.parse()
,因为参数的类型为String
<另一方面,code>DateFormat.format()用于将Date
对象格式化为String
StringBuilder ts = new StringBuilder(df.format(df.parse(time_stmp)));
此外,建议将日期/时间数据保存为数据库中的
时间戳
,而不是字符串
,您需要在此处使用DateFormat.parse()
,因为参数的类型为String
<另一方面,code>DateFormat.format()用于将Date
对象格式化为String
StringBuilder ts = new StringBuilder(df.format(df.parse(time_stmp)));
此外,建议将日期/时间数据保存为数据库中的时间戳
,而不是用于将字符串转换为日期的字符串
StringBuilder ts = new StringBuilder(df.format(df.parse(time_stmp)));
用于将日期转换为字符串
现在大家一起:
SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat stdFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String s = stdFormat.format(dbFormat.parse(input));
您可以根据需要修改格式。用于将字符串转换为日期
用于将日期转换为字符串
现在大家一起:
SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat stdFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String s = stdFormat.format(dbFormat.parse(input));
您可以根据需要修改格式。您的简单日期格式的日期模式错误。您必须使用数据库的模式解析它,然后将其解析回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) );
顺便说一下:
如果希望输出为24小时格式,则必须使用模式yyyyMMddHHmmss
您的简单日期格式具有错误的日期模式。您必须使用数据库的模式解析它,然后将其解析回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) );
顺便说一下:
如果您希望输出为24小时格式,则必须使用模式yyyyMMddHHmmss
问题是,从数据库检索的日期格式为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));
`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times
问题是,从DB检索到的日期格式是yyyy-dd-MM HH:MM:ss
,您正试图用yyyyymmddhhmmss
你可以这样做
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));
`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times
就像是说你需要使用
SimpleDateFormat.parse()
如果字符串的格式为
`2013-04-19 17:29:06`
您需要构造SimpleDataFormat,以便像这样读入
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));
`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times
就像是说你需要使用
SimpleDateFormat.parse()
如果字符串的格式为
`2013-04-19 17:29:06`
您需要构造SimpleDataFormat,以便像这样读入
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));
`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times
您好,您可以根据自己的选择使用以下代码格式化日期(例如:yyyy MM dd HH:MM:ss)
您好,您可以根据自己的选择使用以下代码格式化日期(例如:yyyy MM dd HH:MM:ss)
这会奏效的
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);
这会奏效的
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);
这给了我一个错误“构造函数StringBuilder(Date)未定义”@user2385057-从那里想出来应该不会太难;-)@user2385057不使用toString(),因为这将使用Date
的默认格式。改为使用自定义的DateFormat
使用parse()
后跟format()
。检查更新。这会给我一个错误“构造函数StringBuilder(日期)未定义”@user2385057-从那里找出它应该不会太难;-)@user2385057不使用toString(),因为这将使用Date
的默认格式。改为使用自定义的DateFormat
使用parse()
后跟format()
。检查更新。可能要在此处检查日和月的顺序:)可能要在此处检查日和月的顺序:)