tl; dr
Biarkan kelas java.time modern JSR 310 secara otomatis menghasilkan teks yang dilokalkan, alih-alih mengkode jam 12-jam dan 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 pagi
Secara otomatis melokalkan
Daripada bersikeras pada jam 12 jam dengan AM / PM, Anda mungkin ingin membiarkan java.time secara otomatis melokalisasi untuk Anda. Panggil DateTimeFormatter.ofLocalizedTime
.
Untuk melokalkan, tentukan:
FormatStyle
untuk menentukan berapa lama atau disingkat seharusnya string.
Locale
untuk menentukan:
- Bahasa manusia untuk terjemahan nama hari, nama bulan, dan semacamnya.
- The norma-norma budaya memutuskan isu-isu singkatan, kapitalisasi, tanda baca, pemisah, dan semacamnya.
Di sini kita mendapatkan waktu saat ini seperti yang terlihat di zona waktu tertentu. Kemudian kami menghasilkan teks untuk mewakili waktu itu. Kami melokalkan bahasa Prancis dalam budaya Kanada, lalu bahasa Inggris dalam budaya AS.
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 ) ;
Lihat kode ini berjalan langsung di IdeOne.com .
10 jam 31
10:31 pagi
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");