日期:2014-05-20  浏览次数:20860 次

关于日期格式转换的问题--大家帮忙啊!!急
我有一个String,要转换成这个格式“yyyy-MM-dd   hh:mm:ss”然后插入数据库
而我的String是这样的   String   s   =   "05/May/2007:08:16:57   +0800 ";
请问我该怎么转换啊?
我是这样写的,不过不行报错
  DateFormat   dff   =   new   SimpleDateFormat( "yyyy-MM-dd   hh:mm:ss ");
  String   s   =   "05/May/2007:08:16:57   +0800 ";
  java.util.Date   fime_date   =   dff.parse(s);
  System.out.println( "fime_date: "+fime_date);
要怎么写啊?在线等!!!!!!!帮忙啊!!

------解决方案--------------------
那你不能麻烦一点,把日期的年、月、日、小时、分钟、秒数分别提取出来。再按照自己的需求组合成一个字符串,然后再存到数据库中么?
------解决方案--------------------
这个字符串是挺奇怪的,它是用下面的format来格式化的
SimpleDateFormat dateformat = new SimpleDateFormat( "dd/MMM/yyyy:hh:mm:ss Z ");
里面的Z是timezone
System.out.println(dateformat.format(new Date()));
如果在英文操作系统下执行结果是
08/May/2007:03:55:19 -0700
如果在中午操作系统下执行结果是
08/五月/2007:03:55:19 +0800
所以你这个05/May/2007:08:16:57 +0800 不太对,不知道你怎么得到的,或者你的timezone设的部对.
如果要转换格式的话如下:
SimpleDateFormat dateformat = new SimpleDateFormat( "dd/MMM/yyyy:hh:mm:ss Z ");
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss ");
try {
System.out.println(format.format(dateformat.parse( "05/五月/2007:08:16:57 +0800 ")));
} catch (ParseException e) {
e.printStackTrace();
}
------解决方案--------------------
如果你不想改变自己得到的值,我帮你补充楼上的方法如下
String s = "05/May/2007:08:16:57 +0800 ";
String ss= " ";
if(s.substring(3,6).equals( "May "))
{
ss=ss+s.substring(0,3);
ss=ss+ "五月 ";
ss=ss+s.substring(6,s.length());

SimpleDateFormat dateformat = new SimpleDateFormat(
"dd/MMM/yyyy:hh:mm:ss Z ");
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss ");
try {
ss=format.format(dateformat.parse(ss));
}
catch (ParseException e) {
e.printStackTrace();
}

}

System.out.println(ss);


其他月的判断你自己写CASE吧
------解决方案--------------------
String s = "05/May/2007:08:16:57 +0800 ";

这种方式你只能substring了,然后是组合截取下来的字符串组合成你要的格式了。没有别的捷
径了。

还有个就是要确保你月份的东西,产生的是固定的,然后根据相应的月份生成数值型就可以了