在JAVA中解析RFC 2822的日期

我需要在Java中解析日期的RFC 2822字符串表示。 这里有一个示例字符串:

星期六,2010年3月13日11:29:05 -0800

它看起来很讨厌,所以我想确保我做的一切正确并且会在以后通过AM-PM /军事时间问题,UTC时间问题,我没有预料到的问题等解释错误而遇到奇怪的问题等等…

谢谢!

这是快速代码, 可以满足您的要求(使用SimpleDateFormat

 String rfcDate = "Sat, 13 Mar 2010 11:29:05 -0800"; String pattern = "EEE, dd MMM yyyy HH:mm:ss Z"; SimpleDateFormat format = new SimpleDateFormat(pattern); Date javaDate = format.parse(rfcDate); //Done. 

PS。 我没有在这里处理exception和并发(因为解析日期时SimpleDateFormat不同步)。

如果您的应用程序使用的语言不是英语,您可能希望使用备用的SimpleDateFormat构造函数强制解析/格式化日期的语言环境:

 String pattern = "EEE, dd MMM yyyy HH:mm:ss Z"; SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.ENGLISH); 

请记住,[day-of-week“,”]在RFC-2822中是可选的,因此建议的示例并未涵盖所有RFC-2822日期格式。 另外,RFC-822日期类型允许许多不同的时区符号(obs-zone),“Z”格式说明符不包括这些符号。

我想没有简单的方法,除了寻找“,”和“ – | +”来确定使用哪种模式。