Java 8 이상에 내장 된 java.time 클래스는 MonthDay
및 YearMonth
클래스를 제공합니다. 그들의 toString
및 parse
메서드는 표준 ISO 8601 형식 (--MM-DD
& YYYY-MM
)을 사용합니다. 이는 현명한 방법입니다.java.time에서`MonthDay` 또는`YearMonth` 클래스의 문자열을 지역화 하시겠습니까?
사람에게 표시하기 위해 표준 형식이 적합하지 않을 수 있습니다. 자동으로 지역화 된 문자열을 생성하여 MonthDay
또는 YearMonth
의 객체에있는 값을 나타낼 수 있습니까?
예를 들어, 미국에서는 사용자가 일반적으로 월별 MM/DD 및 월 - 월별 MM/YY를 원할 수 있습니다. 영국 사용자는 월간 DD/MM을 원할 수 있습니다.
어쨌든 서식 파일 패턴을 명시 적으로 정의하지 않고 Locale
까지 이러한 변형을 자동화 할 수 있습니까?
나는 날짜 중심의 현지화 포맷을 사용하여, 다음 코드를 시도했다.
Locale l = Locale.US;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate (FormatStyle.SHORT).withLocale (l);
YearMonth ym = YearMonth.of (2017 , Month.JANUARY);
MonthDay md = MonthDay.of (Month.JANUARY , 29);
String outputYm = ym.format (f);
String outputMd = md.format (f);
즉 코드 또는 YearMonth
MonthDay
어느 사용될 때 예외를 발생 실패. YearMonth
를 들어
:
Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: DayOfMonth
at java.time.YearMonth.getLong(YearMonth.java:494)
at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298)
at java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2540)
at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2179)
at java.time.format.DateTimeFormatterBuilder$LocalizedPrinterParser.format(DateTimeFormatterBuilder.java:4347)
at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2179)
at java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1746)
at java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1720)
at java.time.YearMonth.format(YearMonth.java:1073)
at javatimestuff.App.doIt(App.java:56)
at javatimestuff.App.main(App.java:45)
MonthDay
경우 :
Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra
at java.time.MonthDay.getLong(MonthDay.java:451)
at java.time.format.DateTimePrintContext.getValue(DateTimePrintContext.java:298)
at java.time.format.DateTimeFormatterBuilder$NumberPrinterParser.format(DateTimeFormatterBuilder.java:2540)
at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2179)
at java.time.format.DateTimeFormatterBuilder$LocalizedPrinterParser.format(DateTimeFormatterBuilder.java:4347)
at java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.format(DateTimeFormatterBuilder.java:2179)
at java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1746)
at java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1720)
at java.time.MonthDay.format(MonthDay.java:646)
at javatimestuff.App.doIt(App.java:57)
at javatimestuff.App.main(App.java:45)
아마도 'MonthDay.format (DateTimeFormatter)'과 관련된 내용을 찾고 계신 것 같습니까? –
@LouisWasserman'MonthDay'와'YearMonth'의'format()'메소드에서'DateTimeFormatter.ofLocalizedDate'가 실패했다는 것을 보여주는 코드를 추가했습니다. 유사 콘텐츠가있는 경우 게시하십시오. Answer가 [DateTimeFormatterBuilder'] (https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatterBuilder.html)에 있을지 궁금하지만, 어떻게해야할지 모르겠습니다. –