如何将pubDate从RSS提要解析为java中的Date对象。 格式为:2016年3月3日星期四15:30:00 +0200
我试着这样做:
DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH);
//java.util.Date utilDate = new java.util.Date();
java.util.Date utilDate = new java.util.Date();
try {
utilDate = formatter.parse(date);
}
catch (java.text.ParseException p1)
{
p1.printStackTrace();
}
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
但java.sql.Date只保存日期而没有时间 例如:" 2016-02-06 00:00:00"
答案 0 :(得分:1)
答案 1 :(得分:1)
输入字符串的格式恰好被定义为标准RFC 1123。
这种格式早已被ISO 8601定义的更明智的格式所淹没。如果可能,我强烈建议迁移。
您正在使用旧的日期时间类,这些类已经被Java 8及更高版本中内置的java.time框架所破坏。
您的输入格式恰好在java.time中预定义为常量。因此无需指定格式化模式。
String input = "Thu, 03 Mar 2016 15:30:00 +0200";
DateTimeFormatter formatter = DateTimeFormatter.RFC_1123_DATE_TIME ;
OffsetDateTime odt = OffsetDateTime.parse( input , formatter );
有一天,JDBC驱动程序将更新为直接使用java.time类型。在此之前转换为java.sql类型,特别是java.sql.Timestamp
。要转换,我们需要一个Instant
,在UTC时间轴上的一个时刻。我们可以从OffsetDateTime
中提取一个。
Instant instant = odt.toInstant();
java.sql.Timestamp ts = java.sql.Timestamp.from( instant );