求不同格式的日期字符串转换成日期的通用解决方案

lanseqingxu 2005-12-04 01:08:15
今天在做 Rss parser 的时候遇到的棘手问题,java中有什么通用的方法能把不同格式表示的日期字符串正确转换成Date类型,譬如:
"Sun Dec 04 00:30:55 CST 2005"
"Sun,04 Dec 2005 00:30:55"
"Mon, 18 Apr 2005 10:25:40 +0200"
"2005-12-04"
"2005-12-4 0:30:55"
.........

...全文
458 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xueyi0108 2006-06-19
  • 打赏
  • 举报
回复
mark
低调的小青蛙 2005-12-05
  • 打赏
  • 举报
回复
可以声明一组各自格式的 SimpleDateFormat,然后使用循环来 parse,那一个没有抛出异常就说明这个一个OK。

想不出其他办法。
lanseqingxu 2005-12-05
  • 打赏
  • 举报
回复
看来只能写死了,郁闷,个人认为Java中日期相关的类设计得还不够优雅,没有提供一套灵活且高效的转换机制
谢谢楼上各位兄弟,结贴啦
liukang520236 2005-12-05
  • 打赏
  • 举报
回复
太深了,学习吧!!
ChDw 2005-12-05
  • 打赏
  • 举报
回复
你只能一个一个重试,直到不会出现异常为止
ChDw 2005-12-05
  • 打赏
  • 举报
回复
String str = "Sun Dec 04 00:30:55 CST 2005";
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
System.out.println(df.parse(str));

str = "Sun, 04 Dec 2005 00:30:55";
df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
System.out.println(df.parse(str));

str = "Mon, 18 Apr 2005 10:25:40 +0200";
df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
System.out.println(df.parse(str));

str = "2005-12-04";
df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(df.parse(str));

str = "2005-12-4 0:30:55";
df = new SimpleDateFormat("yyyy-MM-dd H:mm:ss");
System.out.println(df.parse(str));
lanseqingxu 2005-12-04
  • 打赏
  • 举报
回复
怎么半天没人回帖,真的没有好的解决办法吗?
大家帮忙顶顶吧,谢谢先^_^
didoleo 2005-12-04
  • 打赏
  • 举报
回复
上面的可以把"yyyy-mm-dd hh:mm:ss"转成Date型
"Sun Dec 04 00:30:55 CST 2005"
"Sun,04 Dec 2005 00:30:55"
"Mon, 18 Apr 2005 10:25:40 +0200"
这些不行了。
didoleo 2005-12-04
  • 打赏
  • 举报
回复
public static Date fromDateString(String dateString, String fromFormat)
{
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat(fromFormat);
df.setTimeZone(gc.getTimeZone());
df.setLenient(false);
Date date = df.parse(dateString, new ParsePosition(0));
return date;
}
lanseqingxu 2005-12-04
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,不过DateFormat.parse()也只能转换一种特定的格式
火山企鹅 2005-12-04
  • 打赏
  • 举报
回复
可以用DateFormat.parse()试一试
lanseqingxu 2005-12-04
  • 打赏
  • 举报
回复
谢谢各位,有关的资料全都查过,simpleDateFormat定义的格式只能转换与其对应的字符串,不符合格式的一样会抛出异常。
rocker9527 2005-12-04
  • 打赏
  • 举报
回复
查看下
org.apache.commons.lang.time
的有关的资料。
或者用简单的SimpleDateFormat。
believefym 2005-12-04
  • 打赏
  • 举报
回复
楼上的不对啊,字符串转date也可以
通用的方法没听说过,需要每种格式定义一个DateFormat的吧
lyj830223 2005-12-04
  • 打赏
  • 举报
回复
好像自有把date型的转化为你所说的各种字符串,没有把字符串转换成date的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧