Java 将字符串转换为特定的日期格式

Java 将字符串转换为特定的日期格式,java,Java,我有一个日期,格式为:2012年3月22日周四。它是通过字符串变量date1获取的。我需要将字符串变量中的日期转换为日期格式。我尝试了以下代码,但未能解析日期;请帮忙 DateFormat formatter; Date formatted_date= null; formatter = new SimpleDateFormat("EEE-MM d yyyy"); try { formatted_date= (Date) formatter.parse(date1); } c

我有一个日期,格式为:
2012年3月22日周四
。它是通过字符串变量date1获取的。我需要将字符串变量中的日期转换为日期格式。我尝试了以下代码,但未能解析日期;请帮忙

DateFormat formatter;
Date formatted_date= null;


formatter = new SimpleDateFormat("EEE-MM d yyyy");
try {
        formatted_date= (Date) formatter.parse(date1);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

将其更改为以下格式

EEE- MMM d yyyy

注意
-
MMM

后面的空格。您需要三个Ms的“MMM”来解析月份缩写词,如“Mar”。请检查“EEE-”后面的空格

Thu- Mar 22 2012
EEE- MMM dd yyyy
我想你需要这样的东西

UPD:对于日期格式:

SimpleDateFormat toStringFormatter = new SimpleDateFormat("EEE MMM dd yyyy");
String formattedDate = toStringFormatter.format(date);

因此,
parse()
用于
String
->
Date
format()
用于
Date
->
String
如果已经发布的答案不起作用,那么您肯定会遇到语言环境问题。尝试以下
SimpleDataFormat

formatter = new SimpleDateFormat("EEE- MMM d yyyy", Locale.ENGLISH);

我感谢给定模式和给定区域设置的默认日期格式符号构造函数SimpleDateFormat。注意:此构造函数可能不支持所有区域设置。涵盖所有语言环境

public SimpleDateFormat(String pattern,Locale locale)
   //local:Locale.ENGLISH
   //default is not English
   formatter = new SimpleDateFormat("EEE, MMM d, ''yy", Locale.ENGLISH);
   try {
        formatted_date= (Date) formatter.parse("Wed, Jul 4, '01");
   } catch (ParseException e) {
        e.printStackTrace();
}

格式字符串中的“-”后面缺少一个空格。在“Thu-mar”和格式之间有一个空格。“EEE-MM”打字错误?我试过了,格式化程序=新的SimpleDataFormat(“EEE-MM d yyyy”);但是得到了相同的错误。formatter=newsimpledateformat(“EEE-MMM d yyy”);。它起作用了…谢谢。我现在还有一个疑问…解析的日期是“Thu Mar 22 00:00 GMT+2012年5:30”格式。但是我如何才能在日期类型的变量中得到它作为2012年3月22日Thu Mar 22本身呢?好吧,如果您只使用
格式化的日期.toString()
,那么您将在这个“Thu Mar 22 00:00:00 GMT+2012年5:30”格式中获得日期。但是,您可以使用日期格式化程序以您喜欢的格式输出日期。我会更新答案的。事实上,我需要将此日期插入mysql数据库,该数据库的列名为:date,类型为'date'。对于第1行的列'date',它显示错误为'error date value:'Thu Mar 22 00:00:00 GMT+05:30 2012'。如何修改代码以将其保存在mysql中?然后您应该阅读
PreparedStatement
并使用其方法
setDate()
。但是首先将日期转换为
java.sql.date