Java SimpleDataFormat

Java SimpleDataFormat,java,mysql,jtable,simpledateformat,Java,Mysql,Jtable,Simpledateformat,我有两张表 表1包含格式为(EE-MMMMM-dd,yyyy)的日期 表2的值取决于用户在表1上单击的内容。通常,从数据库提交的日期格式是(yyyy-dd-MM),我将其格式化为(EE-MMMMM-dd,yyyy),看起来有点不错 我的问题是,我想将其格式化回(yyyy-dd-MM)以便查询工作 我想要这个: Table_1.getValueAt(Table_1.getSelectedRow(),0) - > Thu - Feb 5, 2015 回到这里: 2015-5-2 然后将其

我有两张表

表1包含格式为(
EE-MMMMM-dd,yyyy
)的日期

表2的值取决于用户在表1上单击的内容。通常,从数据库提交的日期格式是(
yyyy-dd-MM
),我将其格式化为(
EE-MMMMM-dd,yyyy
),看起来有点不错

我的问题是,我想将其格式化回(
yyyy-dd-MM
)以便查询工作

我想要这个:

Table_1.getValueAt(Table_1.getSelectedRow(),0) - > Thu - Feb 5, 2015
回到这里:

2015-5-2 

然后将其查询到数据库以获得结果。

使用
SimpleDataFormatter
日历

String date = "Thu-Feb 5, 2015";

SimpleDateFormat sdf = new SimpleDateFormat("EEE-MMM d, yyyy");

Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));

String newDate = cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.DAY_OF_MONTH) + "-" + cal.get(Calendar.MONTH);

System.out.println(date);
System.out.println(newDate);
输出

Thu-Feb 5, 2015
2015-5-1

注意,在上面的输出中,
2月
等于
1
,这是因为一个月从
0开始

为什么不再次使用
SimpleDataFormat
来获得正确的输出?我尝试了不同的方法,但出现了很多错误。对象不能转换为日期,java.lang.String不能转换为java.util.Date等。为什么将日期存储为
char
而不是
Date
如果要比较日期/时间值,请将其保留为
Date
或其他格式-不要尝试比较字符串表示形式,基本上。您将
日期格式化为以字符形式存储在db中。这不是一个好主意。这就是我的意思,这个“newDate”是java.util.Date。我需要将其转换为java.sql.Date,因为我将在查询中使用它。@meatno,
newDate
的类型是
String
,而不是
Date
。您可以将此
字符串
转换为所需的任何类型。