代码之家  ›  专栏  ›  技术社区  ›  user1589188

DateTimeFormatter.ISO\u OFFSET\u DATE\u TIME的等效格式字符串是什么?

  •  4
  • user1589188  · 技术社区  · 7 年前

    我们知道是否有一个等价的格式字符串输出与 DateTimeFormatter.ISO_OFFSET_DATE_TIME

    ZonedDateTime dateTime = ZonedDateTime.now();
    System.out.println(dateTime.format(DateTimeFormatter.ofPattern(pattern)));
    System.out.println(dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
    

    2 回复  |  直到 5 年前
        1
  •  6
  •   Anonymous    7 年前

    不,这是不可能的

    应要求:是的,我们知道没有字符串的等效格式模式 DateTimeFormatter.ISO_OFFSET_DATE_TIME .

    DateTimeFormatter.ISO\偏移量\日期\时间 省略秒和/或秒的毫微秒(如果它们为零)。如果nano为非零,则将根据需要输出尽可能多的数字。没有模式字母或模式字母的组合会给你同样的行为。

    内心深处 DateTimeFormatter ISO_OFFSET_DATE_TIME ISO_LOCAL_TIME

        ISO_LOCAL_TIME = new DateTimeFormatterBuilder()
                .appendValue(HOUR_OF_DAY, 2)
                .appendLiteral(':')
                .appendValue(MINUTE_OF_HOUR, 2)
                .optionalStart()
                .appendLiteral(':')
                .appendValue(SECOND_OF_MINUTE, 2)
                .optionalStart()
                .appendFraction(NANO_OF_SECOND, 0, 9, true)
                .toFormatter(ResolverStyle.STRICT, null);
    

    获得动态特性的方法是:使用 DateTimeFormatterBuilder 以及它的 optionalStart appendFraction 方法。

    ISO\偏移量\日期\时间

        2
  •  8
  •   Evgeniy Dorofeev    7 年前

    这对我有用:

        ZonedDateTime dateTime = ZonedDateTime.now();
        System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")));
        System.out.println(dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
    
    2018-10-03T07:24:14.772+03:00 
    2018-10-03T07:24:14.772+03:00
    

         ZonedDateTime dateTime = ZonedDateTime.of(2001, 1, 1, 0, 0, 0, 1, ZoneId.systemDefault());
         System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")));
         System.out.println(dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));   
    
         2001-01-01T00:00:00.000+02:00
         2001-01-01T00:00:00.000000001+02:00