在 JAVA 中解析 RFC 2822 日期

2022-09-02 02:27:59

我需要在Java中解析日期的RFC 2822字符串表示形式。下面是一个示例字符串:

2010年 03月 13日 11:29:05 -0800

它看起来非常讨厌,所以我想确保我做对了一切,以后会遇到奇怪的问题,日期被解释错误,无论是通过AM-PM/军事时间问题,UTC时间问题,我没有预料到的问题,等等......

谢谢!


答案 1

这是一个快速代码,可以完成您要求(使用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.我在这里没有处理异常和并发(因为SimpleDateFormat在解析日期时不会同步)。


答案 2

如果您的应用程序使用的是英语以外的其他语言,则可能需要使用备用的 SimpleDateFormat 构造函数强制日期分析/格式设置:

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