使用DateTimeFormatter.ofLocalizedDateTime的第二个参数的异常?

时间:2017-08-06 19:24:10

标签: java datetime

我可以/作为DateTimeFormatter.ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle)方法的2个参数传递什么?我尝试JavaDoc 建议,但我收到此错误。我假设你明白在DateTimeFormatter应该能够格式化LocalDate和/或LocalTime对象,正如JavaDoc所暗示的那样,我不认为我误解了,因为JavaDoc显示了它的一个例子。 :

import java.time.*;
import java.util.*;
import java.time.format.*;
class Main {
  public static void main(String[] args) {
    LocalDate pieDay = LocalDate.of(2017, Month.JANUARY, 23);
    LocalTime midnight = LocalTime.of(0,0);
    LocalDateTime pieTime = LocalDateTime.of(pieDay, midnight);

    DateTimeFormatter f2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT, 
        FormatStyle.SHORT);
    f2.format(pieDay); // Exception here at runtime
    f2.format(pieTime);
  }
}

以下是我的沙箱用于试验:https://repl.it/JzHb/28但请运行您自己的此代码段版本,以便在提供之前验证您的答案。

Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException:
  Unsupported field: ClockHourOfAmPm

1 个答案:

答案 0 :(得分:-1)

好的,我的问题的答案是我假设DateTimeFormatter适用于3种组合中的任何一种:

  • LocalDate对象
  • LocalTime对象
  • LocalDateTime对象

但是,似乎DateTimeFormatter无法格式化LocalDate或LocalTime

LocalDate pieDay = LocalDate.of(2017, Month.JANUARY, 23);
LocalTime midnight = LocalTime.of(0,0);
LocalDateTime pieTime = LocalDateTime.of(pieDay, midnight);

DateTimeFormatter f2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.SHORT);

//System.out.println(f2.format(midnight)); // this throws exception
//System.out.println(f2.format(pieDay)); // this throws exception

f2.format(pieTime);  //  this line works

这在JavaDoc中并不明显,因为我期望它以灵活的方式工作,就像旧的java.text.DateFormat类一样。