tl; dr
JSR 310 의 최신 java.time 클래스가 12 시간 시계 및 AM / PM을 하드 코딩하는 대신 현지화 된 텍스트를 자동으로 생성하도록합니다.
LocalTime // Represent a time-of-day, without date, without time zone or offset-from-UTC.
.now( // Capture the current time-of-day as seen in a particular time zone.
ZoneId.of( "Africa/Casablanca" )
) // Returns a `LocalTime` object.
.format( // Generate text representing the value in our `LocalTime` object.
DateTimeFormatter // Class responsible for generating text representing the value of a java.time object.
.ofLocalizedTime( // Automatically localize the text being generated.
FormatStyle.SHORT // Specify how long or abbreviated the generated text should be.
) // Returns a `DateTimeFormatter` object.
.withLocale( Locale.US ) // Specifies a particular locale for the `DateTimeFormatter` rather than rely on the JVM’s current default locale. Returns another separate `DateTimeFormatter` object rather than altering the first, per immutable objects pattern.
) // Returns a `String` object.
오전 10:31
자동 현지화
AM / PM을 사용하여 12 시간 시계를 고집하지 않고 java.time이 자동으로 현지화되도록 할 수 있습니다. 요구DateTimeFormatter.ofLocalizedTime
.
현지화하려면 다음을 지정하십시오.
FormatStyle
문자열의 길이 또는 약어를 결정합니다.
Locale
결정:
- 인간의 언어 일의 이름의 번역, 달의 이름과 같은합니다.
- 약어, 대문자, 구두점, 구분 기호 등의 문제를 결정 하는 문화적 규범 .
여기서 우리는 특정 시간대에서 볼 수있는 현재 시간을 얻습니다. 그런 다음 해당 시간을 나타내는 텍스트를 생성합니다. 우리는 캐나다 문화에서 프랑스어로, 그 다음 미국 문화에서 영어로 현지화합니다.
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalTime localTime = LocalTime.now( z ) ;
// Québec
Locale locale_fr_CA = Locale.CANADA_FRENCH ; // Or `Locale.US`, and so on.
DateTimeFormatter formatterQuébec = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale_fr_CA ) ;
String outputQuébec = localTime.format( formatterQuébec ) ;
System.out.println( outputQuébec ) ;
// US
Locale locale_en_US = Locale.US ;
DateTimeFormatter formatterUS = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale_en_US ) ;
String outputUS = localTime.format( formatterUS ) ;
System.out.println( outputUS ) ;
이 코드는 IdeOne.com에서 실시간으로 실행 됩니다.
10 시간 31
오전 10:31
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");