Java 将字符串格式的日期解析为GregoriaCalendar的最简单方法

Java 将字符串格式的日期解析为GregoriaCalendar的最简单方法,java,time,Java,Time,我有以下日期: 2011-10-07T08:51:52.006Z 现在我想把它解析成一个gregorianalendar。有没有比使用子字符串并将其解析为整数更简单的方法 时间串中的Z是多少 我尝试使用SimpleDataFormat解析它,但在日期字符串中找不到对t的解释。您可以使用解析字符串。请阅读上述类的javadoc,以了解格式字符串是什么Z'表示时区信息。我想看看DateTimeFormatter DateTimeFormatter formatter = DateTimeF

我有以下日期:

2011-10-07T08:51:52.006Z
现在我想把它解析成一个gregorianalendar。有没有比使用子字符串并将其解析为整数更简单的方法

时间串中的Z是多少


我尝试使用SimpleDataFormat解析它,但在日期字符串中找不到对t的解释。

您可以使用解析字符串。请阅读上述类的javadoc,以了解格式字符串是什么Z'表示时区信息。

我想看看
DateTimeFormatter

DateTimeFormatter formatter =
    DateTimeFormat.forPattern("<custom_pattern>").withOffsetParsed();
DateTime dateTime = formatter.parseDateTime("<your_input>");
GregorianCalendar cal = dateTime.toGregorianCalendar();
DateTimeFormatter格式化程序=
DateTimeFormat.forPattern(“”).withOffsetParsed();
DateTime DateTime=formatter.parseDateTime(“”);
GregorianCalendar cal=dateTime.toGregorianCalendar();
字符串中的T用作日期和时间之间的分隔符,Z是时区信息,根据。

Z(如Gonzalo的回答中所述)不是一个常量字母(“Z”),而是使用XXXX ISO-8601格式时GMT时间的缩写。调用calendar.setTime(date)将以毫秒为单位设置时间,但会丢失时区信息(示例中Z所示的XXXX格式)
DateFormat format = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" )
Date       date = format.parse( "2011-10-07T08:51:52.006Z" );
Calendar   calendar = new GregorianCalendar();

calendar.setTime( date );