在java中,如何将pubDate从RSS提要解析为日期对象

在java中,如何将pubDate从RSS提要解析为日期对象,java,rss,Java,Rss,如何在java中将pubDate从RSS提要解析为日期对象。 格式为: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 utilDa

如何在java中将pubDate从RSS提要解析为日期对象。 格式为: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”

没有时间

你可能应该使用

你可以这样使用它

new java.sql.Timestamp(utilDate.getTime());
RFC1123 输入字符串的格式恰好被定义为标准

长期以来,这种格式已经被更合理的格式所过时。如果可能的话,我强烈建议迁移

java.time 您使用的是旧的日期时间类,这些类已经被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类型,特别是在这里的示例中。要转换,我们需要一个
瞬间
,即UTC时间轴上的一个瞬间。我们可以从我们的
OffsetDateTime
中提取一个

Instant instant = odt.toInstant();
java.sql.Timestamp ts = java.sql.Timestamp.from( instant );

“但是java.sql.Date只保存日期而不保存时间…”你确定吗
utilDate.getTime()
返回
long
,返回从日历开始日期到现在的时间值。它怎么能不回来呢?您可以使用
java.sql.Date
getTimestamp(…)
方法将其转换回
java.util.Date
,并返回带时间的日期。@user3346907您可以通过单击“答案”旁边的右标记将其标记为答案(如果有帮助的话)