TL; DR
ให้คลาสjava.time ที่ทันสมัยของ JSR 310 สร้างข้อความที่แปลเป็นภาษาท้องถิ่นโดยอัตโนมัติแทนการเข้ารหัสแบบ 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:30 น
แปลเป็นภาษาท้องถิ่นโดยอัตโนมัติ
แทนที่จะยืนยันเวลา 12 ชั่วโมงด้วย AM / PM คุณอาจต้องการให้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:30 น
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");