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

时间:2015-09-29 12:00:48

标签: java datetime simpledateformat

我在message.properties收到了iso格式的日期。如何解析它以获得JavaMM

iso格式的日期:DD

2 个答案:

答案 0 :(得分:1)

一些参考文献

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();
}   

希望有所帮助

答案 1 :(得分:1)

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();