我需要用Java解析日期的RFC 2822字符串表示。这里有一个示例字符串:
2010年3月13日,星期六11:29-0800
这看起来很糟糕,所以我想确定我做的一切都是正确的,以后会遇到一些奇怪的问题,不管是通过AM-PM/军事时间问题,UTC时间问题,还是我没有预料到的问题,等等。
谢谢!
发布于 2010-03-16 22:19:22
这是一段快速的代码,可以满足您的要求(使用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在解析日期时不同步)。
发布于 2011-04-06 14:03:48
如果应用程序使用的是英语以外的另一种语言,则可能希望使用备用SimpleDateFormat构造函数强制区域设置日期解析/格式化:
String pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.ENGLISH);发布于 2013-07-01 12:40:34
请记住,",“在RFC-2822中是可选的,因此建议的示例并不涵盖所有RFC-2822日期格式。另外,RFC-822日期类型允许许多不同的时区符号(obs- zone ),这些符号不在"Z“格式说明符的范围之内。
我想,除了寻找“、”和"-|+“来决定使用哪种模式之外,没有什么容易的出路。
https://stackoverflow.com/questions/2458524
复制相似问题