如何解析 Java 中 ISO 格式的日期?

How to Parse Date in ISO format in Java?

我在 Java 中收到 iso 格式日期。我如何解析它以获得 MMDD

iso 格式的日期:2015-08-10T21:00:00.090Z

一些参考资料

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

Calendar cal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault()) ;
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.getDefault());
try {
        Date date = dateformat.parse("2015-08-10T21:00:00.090Z");
        cal.setTime(date);
        String result = new SimpleDateFormat("MM dd", Locale.getDefault()).format(cal.getTime());
        System.out.println(result);

} catch (ParseException e) {
        e.printStackTrace();
}   

希望对您有所帮助

java.time

另一个答案使用麻烦的旧日期时间 类 现在被 java.time 类.

取代

java.time 类 在解析和生成表示日期时间值的字符串时默认使用 ISO 8601 格式。

一个 Instant 表示 UTC 时间轴上的一个时刻,精度为纳秒。

Instant instant = Instant.parse( "2015-08-10T21:00:00.090Z" );

调整到您希望看到这一刻的时区。

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

可以查询月日。

int month = zdt.getMonthValue();
int dayOfMonth = zdt.getDayOfMonth();