解析字符串到目前为止

时间:2013-02-06 16:42:06

标签: java string date simpledateformat

我要解析的字符串:

  

Sun 11月10日10:00:00 CET 2013

我的代码:

substrings = "Sun Nov 10 10:00:00 CET 2013"

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss ZZZ yyyy");
Date date = parserSDF.parse(substrings);

编译器错误输出:

  

java.text.ParseException:Unparseable date:“Sun Nov 10 10:00:00 CET 2013”     at java.text.DateFormat.parse(Unknown Source)     ...

4 个答案:

答案 0 :(得分:1)

可能你错过了正确的Locale。在您的示例中尝试此操作:

    SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss ZZZ yyyy", Locale.US);

答案 1 :(得分:0)

ZZZ将尝试根据RFC 822时区格式化时区,改为使用zzz。

Here's the JavaDoc link以供参考

答案 2 :(得分:0)

java.time

现代方法使用 java.time 类。

String input = "Sun Nov 10 10:00:00 CET 2013";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM d HH:mm:ss z uuuu" , Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
  

zdt.toString():2013-11-10T10:00 + 01:00 [欧洲/巴黎]

可怕的旧java.util.Date类在多年前被java.time.Instant类所取代。两者都代表UTC的时刻。要从上面显示的时区调整为UTC,只需提取一个Instant对象。

Instant instant = zdt.toInstant() ;  // Adjust from time zone to UTC.

避免使用java.util.Date。但是,如果您必须与尚未更新为 java.time 的旧代码进行互操作,则可以来回转换。请参阅添加到旧类中的新方法,例如Date.fromDate::toInstant方法。


关于 java.time

java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendarSimpleDateFormat

目前位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

在哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

答案 3 :(得分:-1)

问题是parserSDF采用字符串而不是数组和ParsePosition。我写这个是为了输出我想你想要的东西。

import java.text.*;
public class Parser{
    public static void main(String[] args){
    String input = "Sun Nov 10 10:00:00 CET 2013";
    SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss ZZZ yyyy");
    System.out.println(parserSDF.parse(input, new ParsePosition(0)));
    }
}

我建议您查看API中的SimpleDateFormatParsePosition

相关问题