【问题标题】:How to Parse Date in ISO format in Java? [duplicate]如何在 Java 中解析 ISO 格式的日期? [复制]
【发布时间】:2015-12-26 21:43:06
【问题描述】:

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

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

【问题讨论】:

  • 你试过了吗?
  • 你的意思是ISO格式吗?
  • @AndyTurner 是的,这是拼写错误
  • 试试这个页面。类似的问题在这里:stackoverflow.com/questions/2580925/…
  • 如果您使用 Java 8,您可以通过以下方式轻松完成:ZonedDateTime date = ZonedDateTime.parse("2015-08-10T21:00:00.090Z", DateTimeFormatter.ISO_DATE_TIME);

标签: java datetime simpledateformat


【解决方案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();
}   

希望对你有帮助

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多