Internalisasi Java - Panduan Cepat
Internalisasi
Internalisasi atau I18N mengacu pada kemampuan Aplikasi untuk dapat melayani pengguna dalam berbagai bahasa. Java memiliki dukungan bawaan untuk Internalisasi. Java juga menyediakan format angka, mata uang dan penyesuaian tanggal dan waktu yang sesuai.
Internasionalisasi Java membantu membuat aplikasi java menangani berbagai bahasa, format angka, mata uang, pemformatan waktu khusus wilayah.
Lokalisasi
Lokalisasi atau L10N adalah kemampuan beradaptasi aplikasi yaitu bagaimana aplikasi menyesuaikan dirinya dengan bahasa tertentu, format angka, pengaturan tanggal dan waktu, dll.
Aplikasi java harus diinternasionalkan agar dapat melokalkan dirinya sendiri.
Informasi yang Bergantung pada Budaya
Item informasi berikut sering kali berbeda dengan zona waktu atau budaya yang berbeda.
Messages
Date
Time
Number
Currency
Measurements
Nomor telepon
Alamat Pos
Label GUI
Kelas Internasionalisasi
Java memiliki sekumpulan kelas built-in yang membantu dalam internasionalisasi aplikasi. Kelas-kelas ini adalah sebagai berikut:
Sr.No. | Kelas & Deskripsi |
---|---|
1 | Locale Mewakili bahasa bersama dengan negara / wilayah. |
2 | ResourceBundle Berisi teks atau objek yang dilokalkan. |
3 | NumberFormat Gunakan untuk memformat angka / mata uang sesuai dengan lokal. |
4 | DecimalFormat Gunakan untuk memformat angka sesuai format yang disesuaikan dan sesuai lokal. |
5 | DateFormat Gunakan untuk memformat tanggal sesuai lokal. |
6 | SimpleDateFormat Gunakan untuk memformat tanggal sesuai format yang disesuaikan dan sesuai lokal. |
Internalisasi Java - Pengaturan Lingkungan
Dalam bab ini, kita akan membahas tentang berbagai aspek pengaturan lingkungan yang cocok untuk Java.
Pengaturan Lingkungan Lokal
Jika Anda masih ingin mengatur lingkungan Anda untuk bahasa pemrograman Java, maka bagian ini memandu Anda tentang cara mengunduh dan mengatur Java di komputer Anda. Berikut adalah langkah-langkah untuk mengatur lingkungan.
Java SE tersedia secara gratis dari tautan Unduh Java . Anda dapat mengunduh versi berdasarkan sistem operasi Anda.
Ikuti petunjuk untuk mengunduh Java dan menjalankan .exeuntuk menginstal Java di komputer Anda. Setelah Anda menginstal Java di komputer Anda, Anda perlu mengatur variabel lingkungan agar mengarah ke direktori instalasi yang benar -
Menyiapkan Path untuk Windows
Dengan asumsi Anda telah menginstal Java di direktori c: \ Program Files \ java \ jdk -
Klik kanan pada 'My Computer' dan pilih 'Properties'.
Klik tombol 'Variabel lingkungan' di bawah tab 'Lanjutan'.
Sekarang, ubah variabel 'Path' sehingga juga berisi path ke Java yang dapat dieksekusi. Contoh, jika jalur saat ini disetel ke 'C: \ WINDOWS \ SYSTEM32', ubah jalur Anda menjadi 'C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin'.
Menyiapkan Path untuk Linux, UNIX, Solaris, FreeBSD
Variabel lingkungan PATH harus disetel agar mengarah ke tempat biner Java telah dipasang. Lihat dokumentasi shell Anda, jika Anda kesulitan melakukan ini.
Contoh, jika Anda menggunakan bash sebagai shell Anda, maka Anda akan menambahkan baris berikut di akhir '.bashrc: export PATH = / path / to / java: $ PATH'
Editor Java Populer
Untuk menulis program Java Anda, Anda memerlukan editor teks. Ada IDE yang lebih canggih yang tersedia di pasaran. Tetapi untuk saat ini, Anda dapat mempertimbangkan salah satu dari yang berikut -
Notepad - Pada mesin Windows, Anda dapat menggunakan editor teks sederhana seperti Notepad (Disarankan untuk tutorial ini), TextPad.
Netbeans - IDE Java yang open-source dan gratis yang dapat diunduh dari https://www.netbeans.org/index.html.
Eclipse - IDE Java yang dikembangkan oleh komunitas open-source eclipse dan dapat diunduh dari https://www.eclipse.org/.
Apa selanjutnya?
Bab selanjutnya akan mengajarkan Anda cara menulis dan menjalankan program Java pertama Anda dan beberapa sintaks dasar penting di Java yang diperlukan untuk mengembangkan aplikasi.
Internalisasi Java - Kelas Lokal
Objek Lokal mewakili wilayah geografis / politik / budaya tertentu. Operasi apa pun yang memerlukan Lokal untuk melakukan tugasnya disebut operasi peka-lokal dan menggunakan Lokal untuk menguasai informasi relatif terhadap pengguna. Misalnya, menampilkan angka adalah operasi yang peka terhadap lokal. Nomor harus diformat sesuai dengan kebiasaan dan konvensi negara, wilayah, atau budaya asli pengguna.
Isi Lokal
Objek lokal berisi berikut ini:
Language- Kode bahasa ISO 639 alpha-2 atau alpha-3, atau sub tag bahasa terdaftar hingga 8 huruf alpha. kode alpha-2 harus digunakan jika kode alpha-2 dan alpha-3 ada. Bidang bahasa tidak peka huruf besar / kecil, tetapi Lokal selalu dikanonikalisasi menjadi huruf kecil.
Script- Kode skrip ISO 15924 alpha-4. Bidang skrip peka huruf besar / kecil, tetapi Lokal selalu dikanonikalisasi ke huruf besar / kecil.
Country (region)- Kode negara ISO 3166 alpha-2 atau kode area UN M.49 numerik-3. Kolom negara tidak peka huruf besar / kecil, tetapi Lokal selalu dikanonikalisasi menjadi huruf besar.
Variant- Nilai sembarang apa pun yang digunakan untuk menunjukkan variasi Lokal. Jika ada dua atau lebih nilai varian yang masing-masing menunjukkan semantiknya sendiri, nilai ini harus diurutkan berdasarkan kepentingan, dengan yang terpenting terlebih dahulu, dipisahkan oleh garis bawah ('_'). Bidang varian peka huruf besar / kecil.
Extensions- Peta dari kunci karakter tunggal ke nilai string, menunjukkan ekstensi selain identifikasi bahasa. Ekstensi di Lokal menerapkan semantik dan sintaks sub tag ekstensi BCP 47 dan penggunaan pribadi sub tag. Ekstensi peka huruf besar kecil, tetapi Lokal mengkanonikalisasi semua kunci ekstensi dan nilai menjadi huruf kecil.
Internalisasi Java - Contoh - Detail Lokal
Dalam contoh ini, kita akan mendapatkan lokal default dan mencetak detailnya. Kemudian buat lokal untuk "fr" dan cetak detailnya.
I18NTester.java
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale locale =Locale.getDefault();
System.out.println("Default Locale Properties:\n");
System.out.println(locale.getDisplayCountry());
System.out.println(locale.getDisplayLanguage());
System.out.println(locale.getDisplayName());
System.out.println(locale.getISO3Country());
System.out.println(locale.getISO3Language());
System.out.println(locale.getLanguage());
System.out.println(locale.getCountry());
Locale frenchLocale = new Locale("fr","fr");
System.out.println("\nfr Locale Properties:\n");
System.out.println(frenchLocale.getDisplayCountry());
System.out.println(frenchLocale.getDisplayLanguage());
System.out.println(frenchLocale.getDisplayName());
System.out.println(frenchLocale.getISO3Country());
System.out.println(frenchLocale.getISO3Language());
System.out.println(frenchLocale.getLanguage());
System.out.println(frenchLocale.getCountry());
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Default Locale Properties:
United States
English
English (United States)
USA
eng
en
US
fr Locale Properties:
France
French
French (France)
FRA
fra
fr
FR
Internalisasi Java - Contoh - Bahasa Tampilan
Dalam contoh ini, kita akan mendapatkan bahasa tampilan per lokal yang diteruskan sebagai argumen.
I18NTester.java
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale defaultLocale = Locale.getDefault();
Locale enLocale = new Locale("en", "US");
Locale frLocale = new Locale("fr", "FR");
Locale esLocale = new Locale("es", "ES");
System.out.println(defaultLocale.getDisplayLanguage(enLocale));
System.out.println(defaultLocale.getDisplayLanguage(frLocale));
System.out.println(defaultLocale.getDisplayLanguage(esLocale));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
English
anglais
inglés
Internalisasi Java - Kelas ResourceBundle
Kelas ResourceBundle digunakan untuk menyimpan teks dan objek yang sensitif terhadap lokal. Umumnya kami menggunakan file properti untuk menyimpan teks khusus lokal dan kemudian merepresentasikannya menggunakan objek ResourceBundle. Berikut adalah langkah-langkah untuk menggunakan file properti khusus lokal dalam aplikasi berbasis java.
Langkah 1: Buat file properti.
Misalkan kita membutuhkan file properti untuk bahasa Inggris lokal. Kemudian buat nama file properti XXX_en_US.properties di mana XXX adalah nama file dan en_US mewakili lokal untuk bahasa Inggris (AS).
Properti Messages_en_US
message=Welcome to TutorialsPoint.COM!
Sekarang mari buat file properti untuk bahasa Prancis. Kemudian buat nama file properti XXX_fr_FR.properties di mana XXX adalah nama file dan fr_FR mewakili lokal untuk bahasa Prancis (Prancis).
Properti Messages_fr_FR
message=Bienvenue sur TutorialsPoint.COM!
Di sini Anda dapat mengetahui bahwa kuncinya sama tetapi nilainya khusus lokal di kedua file properti.
Langkah 2: Buat objek ResourceBundle
Buat objek ResourceBundle dengan nama file properti dan lokal menggunakan sintaks berikut.
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
Langkah 3: Dapatkan nilai dari objek ResourceBundle.
Dapatkan nilai dari objek ResourceBundle dengan meneruskan kunci.
String value = bundle.getString("message");
Contoh
Contoh berikut mengilustrasikan penggunaan objek ResourceBundle untuk menampilkan nilai spesifik lokal dari file properti.
IOTester.java
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NTester {
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));
bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);
System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!
Catatan untuk Konvensi Penamaan
Berikut adalah konvensi penamaan untuk file properti.
Untuk file properti yang dipetakan ke lokal default, tidak ada prefiks yang wajib diisi. message_en_US.properties sama dengan message.properties.
Untuk file properti yang dipetakan ke lokal, awalan dapat dilampirkan dengan dua cara. message_fr.properties sama dengan message_fr_FR.properties.
Internalisasi Java - Kelas NumberFormat
Kelas java.text.NumberFormat digunakan untuk memformat angka dan mata uang sesuai dengan Lokal tertentu. Format angka bervariasi dari satu negara ke negara lain. Misalnya, Di Denmark pecahan angka dipisahkan dari bagian bilangan bulat menggunakan koma sedangkan di Inggris mereka menggunakan titik sebagai pemisah.
Contoh - Format Angka
Dalam contoh ini, kami memformat angka berdasarkan lokal AS dan Lokal Denmark.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
Locale daLocale = new Locale("da", "DK");
NumberFormat numberFormat = NumberFormat.getInstance(daLocale);
System.out.println(numberFormat.format(100.76));
numberFormat = NumberFormat.getInstance(enLocale);
System.out.println(numberFormat.format(100.76));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
100,76
100.76
Internalisasi Java - Format Mata Uang
Dalam contoh ini, kami memformat mata uang berdasarkan lokal AS dan Lokal Denmark.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
Locale daLocale = new Locale("da", "DK");
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(daLocale);
System.out.println(numberFormat.format(100.76));
numberFormat = NumberFormat.getCurrencyInstance(enLocale);
System.out.println(numberFormat.format(100.76));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
kr 100,76
$100.76
Internalisasi Java - Format Persentase
Dalam contoh ini, kami memformat angka dalam format persentase.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
NumberFormat numberFormat = NumberFormat.getPercentInstance(enLocale);
System.out.println(numberFormat.format(0.76));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
76%
Internalisasi Java - Tetapkan Presisi Min / Maks
Dalam contoh ini, kami menetapkan angka min dan maks untuk bilangan bulat serta bagian pecahan dari sebuah bilangan.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
NumberFormat numberFormat = NumberFormat.getInstance(enLocale);
numberFormat.setMinimumIntegerDigits(2);
numberFormat.setMaximumIntegerDigits(3);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setMaximumFractionDigits(3);
System.out.println(numberFormat.format(12234.763443));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
234.763
Internalisasi Java - Atur Mode Pembulatan
Dalam contoh ini, kami menampilkan Mode Pembulatan.
IOTester.java
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
NumberFormat numberFormat = NumberFormat.getInstance(enLocale);
numberFormat.setMinimumFractionDigits(0);
numberFormat.setMaximumFractionDigits(0);
System.out.println(numberFormat.format(99.50));
numberFormat.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(numberFormat.format(99.50));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
100
99
Internalisasi Java - Angka Parsing
Dalam contoh ini, kami menampilkan penguraian angka yang ada di lokasi berbeda.
IOTester.java
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) throws ParseException {
Locale enLocale = new Locale("en", "US");
Locale daLocale = new Locale("da", "DK");
NumberFormat numberFormat = NumberFormat.getInstance(daLocale);
System.out.println(numberFormat.parse("100,76"));
numberFormat = NumberFormat.getInstance(enLocale);
System.out.println(numberFormat.parse("100,76"));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
100.76
10076
Internalisasi Java - Kelas DecimalFormat
Kelas java.text.DecimalFormat digunakan untuk memformat angka sesuai format yang disesuaikan dan sesuai lokal.
Contoh - Format Angka
Dalam contoh ini, kami memformat angka berdasarkan pola tertentu.
IOTester.java
import java.text.DecimalFormat;
public class I18NTester {
public static void main(String[] args) {
String pattern = "####,####.##";
double number = 123456789.123;
DecimalFormat numberFormat = new DecimalFormat(pattern);
System.out.println(number);
System.out.println(numberFormat.format(number));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
1.23456789123E8
1,2345,6789.12
Internalisasi Java - Pola Format
Berikut ini adalah penggunaan karakter dalam pola format.
Sr.No. | Kelas & Deskripsi |
---|---|
1 | 0 Untuk menampilkan 0 jika ada lebih sedikit digit. |
2 | # Untuk menampilkan angka menghilangkan nol di depan. |
3 | . Pemisah desimal. |
4 | , Pemisah pengelompokan. |
5 | E Pemisah Mantissa dan Eksponen untuk format eksponensial. |
6 | ; Pemisah format. |
7 | - Awalan angka negatif. |
8 | % Menunjukkan angka sebagai persentase setelah dikalikan dengan 100. |
9 | ? Menunjukkan angka sebagai mille setelah dikalikan dengan 1000. |
10 | X Untuk menandai karakter sebagai awalan / akhiran angka. |
11 | ' Untuk menandai kutipan di sekitar karakter khusus. |
Dalam contoh ini, kami memformat angka berdasarkan pola yang berbeda.
IOTester.java
import java.text.DecimalFormat;
public class I18NTester {
public static void main(String[] args) {
String pattern = "###.###";
double number = 123456789.123;
DecimalFormat numberFormat = new DecimalFormat(pattern);
System.out.println(number);
//pattern ###.###
System.out.println(numberFormat.format(number));
//pattern ###.#
numberFormat.applyPattern("###.#");
System.out.println(numberFormat.format(number));
//pattern ###,###.##
numberFormat.applyPattern("###,###.##");
System.out.println(numberFormat.format(number));
number = 9.34;
//pattern 000.###
numberFormat.applyPattern("000.##");
System.out.println(numberFormat.format(number));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
1.23456789123E8
1,2345,6789.12
Internalisasi Java - DecimalFormat Khusus Lokal
Secara default, objek DecimalFormat menggunakan lokal JVM. Kita dapat mengubah lokal default saat membuat objek DecimalFormat menggunakan kelas NumberFormat. Pada contoh di bawah ini, kita akan menggunakan pola yang sama untuk dua lokasi berbeda dan Anda dapat melihat perbedaan dalam keluarannya.
IOTester.java
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
String pattern = "###.##";
double number = 123.45;
Locale enlocale = new Locale("en", "US");
Locale dalocale = new Locale("da", "DK");
DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(enlocale);
decimalFormat.applyPattern(pattern);
System.out.println(decimalFormat.format(number));
decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(dalocale);
decimalFormat.applyPattern(pattern);
System.out.println(decimalFormat.format(number));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
123.45
123,45
Internalisasi Java - Kelas DecimalFormatSymbols
Menggunakan kelas DecimalFormatSymbols, simbol pemisah default, simbol pemisah pengelompokan, dll. Dapat diubah. Contoh berikut menggambarkan hal yang sama.
IOTester.java
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class I18NTester {
public static void main(String[] args) {
String pattern = "#,###.###";
double number = 126473.4567;
DecimalFormat decimalFormat = new DecimalFormat(pattern);
System.out.println(decimalFormat.format(number));
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(';');
decimalFormatSymbols.setGroupingSeparator(':');
decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);
System.out.println(decimalFormat.format(number));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
126,473.457
126:473;457
Internalisasi Java - Pengelompokan Digit
Menggunakan metode setGroupingSize () dari DecimalFormat, pengelompokan angka default dapat diubah. Contoh berikut menggambarkan hal yang sama.
IOTester.java
import java.text.DecimalFormat;
public class I18NTester {
public static void main(String[] args) {
double number = 121223232473.4567;
DecimalFormat decimalFormat = new DecimalFormat();
System.out.println(number);
System.out.println(decimalFormat.format(number));
decimalFormat.setGroupingSize(4);
System.out.println(decimalFormat.format(number));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
1.212232324734567E11
121,223,232,473.457
1212,2323,2473.457
Internalisasi Java - Kelas DateFormat
format kelas java.text.DateFormat tanggal sesuai dengan lokal. Karena negara yang berbeda menggunakan format yang berbeda untuk menampilkan tanggal. Kelas ini sangat berguna dalam menangani tanggal dalam internalisasi aplikasi. Contoh berikut menunjukkan cara membuat dan menggunakan Kelas DateFormat.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale locale = new Locale("da","DK");
DateFormat dateFormat = DateFormat.getDateInstance();
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
System.out.println(dateFormat.format(new Date()));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Nov 29, 2017
29-11-2017
Internalisasi Java - Memformat Tanggal
Kelas DateFormat menyediakan berbagai format untuk memformat tanggal. Berikut adalah daftar dari beberapa format.
DateFormat.DEFAULT
DateFormat.SHORT
DateFormat.MEDIUM
DateFormat.LONG
DateFormat.FULL
Dalam contoh berikut, kami akan menunjukkan cara menggunakan format yang berbeda.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) {
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(dateFormat.format(new Date()));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Nov 29, 2017
11/29/17
Nov 29, 2017
November 29, 2017
Wednesday, November 29, 2017
Internalisasi Java - Waktu Pemformatan
Kelas DateFormat menyediakan berbagai format untuk memformat waktu. Metode DateFormat.getTimeInstance () akan digunakan. Lihat contoh di bawah ini.
Dalam contoh berikut, kami akan menunjukkan bagaimana menggunakan format yang berbeda untuk memformat waktu.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) {
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.LONG);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.FULL);
System.out.println(dateFormat.format(new Date()));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
4:11:21 PM
4:11 PM
4:11:21 PM
4:11:21 PM IST
4:11:21 PM IST
Internalisasi Java - Memformat Tanggal dan Waktu
Kelas DateFormat menyediakan berbagai format untuk memformat tanggal dan waktu bersama. Metode DateFormat.getDateTimeInstance () akan digunakan. Lihat contoh di bawah ini.
Dalam contoh berikut, kami akan menunjukkan bagaimana menggunakan format yang berbeda untuk memformat tanggal dan waktu.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) {
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(dateFormat.format(new Date()));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Nov 29, 2017 4:16:13 PM
11/29/17 4:16 PM
Nov 29, 2017 4:16:13 PM
November 29, 2017 4:16:13 PM IST
Wednesday, November 29, 2017 4:16:13 PM IST
Internalisasi Java - Kelas SimpleDateFormat
java.text.SimpleDateFormat format kelas tanggal sesuai pola yang diberikan. Ini juga digunakan untuk mengurai tanggal dari string di mana string berisi tanggal dalam format yang disebutkan. Lihat contoh berikut menggunakan kelas SimpleDateFormat.
IOTester.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) throws ParseException {
String pattern = "dd-MM-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = new Date();
System.out.println(date);
System.out.println(simpleDateFormat.format(date));
String dateText = "29-11-2017";
date = simpleDateFormat.parse(dateText);
System.out.println(simpleDateFormat.format(date));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Wed Nov 29 17:01:22 IST 2017
29-11-2017
29-11-2017
Internalisasi Java - SimpleDateFormat khusus lokal
Lokal dapat digunakan untuk membuat pemformatan khusus lokal di atas pola di kelas SimpleDateFormat. Lihat contoh berikut tentang penggunaan kelas SimpleDateFormat khusus lokal.
IOTester.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) throws ParseException {
Locale locale = new Locale("da", "DK");
String pattern = "EEEEE MMMMM yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = new Date();
System.out.println(date);
System.out.println(simpleDateFormat.format(date));
simpleDateFormat = new SimpleDateFormat(pattern,locale);
System.out.println(simpleDateFormat.format(date));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Wed Nov 29 17:48:14 IST 2017
Wednesday November 2017
onsdag november 2017
Internalisasi Java - Kelas DecimalFormatSymbols
Menggunakan kelas DecimalFormatSymbols, simbol pemisah default, simbol pemisah pengelompokan, dll. Dapat diubah. Contoh berikut menggambarkan hal yang sama.
IOTester.java
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class I18NTester {
public static void main(String[] args) {
String pattern = "#,###.###";
double number = 126473.4567;
DecimalFormat decimalFormat = new DecimalFormat(pattern);
System.out.println(decimalFormat.format(number));
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(';');
decimalFormatSymbols.setGroupingSeparator(':');
decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);
System.out.println(decimalFormat.format(number));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
126,473.457
126:473;457
Internalisasi Java - Pola Format Tanggal
Berikut adalah penggunaan karakter dalam pola format tanggal.
Sr.No. | Kelas & Deskripsi |
---|---|
1 | G Untuk menampilkan Era. |
2 | y Untuk menampilkan Tahun. Nilai yang valid yy, yyyy. |
3 | M Untuk menampilkan Bulan. Nilai yang valid MM, MMM atau MMMMM. |
4 | d Untuk menampilkan hari dalam sebulan. Nilai yang valid d, dd. |
5 | h Untuk menampilkan jam dalam sehari (1-12 AM / PM). Nilai valid hh. |
6 | H Untuk menampilkan jam dalam sehari (0-23). Nilai valid HH. |
7 | m Untuk menampilkan menit dalam jam (0-59). Nilai yang valid mm. |
8 | s Untuk menampilkan detik dalam menit (0-59). Nilai yang valid ss. |
9 | S Untuk menampilkan milidetik menit (0-999). Nilai valid SSS. |
10 | E Untuk menampilkan Hari dalam seminggu (mis. Senin, Selasa, dll.) |
11 | D Untuk menampilkan Hari dalam tahun (1-366). |
12 | F Untuk menampilkan Hari dalam seminggu dalam sebulan (mis. Kamis pertama Desember). |
13 | w Untuk menampilkan Minggu dalam tahun (1-53). |
14 | W Untuk menampilkan Minggu dalam bulan (0-5) |
15 | a Untuk menampilkan AM / PM |
16 | k Untuk menampilkan Jam dalam hari (1-24). |
17 | K Untuk menampilkan Jam dalam hari, AM / PM (0-11). |
18 | z Untuk menampilkan Zona Waktu. |
Dalam contoh ini, kami memformat tanggal berdasarkan pola yang berbeda.
IOTester.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) throws ParseException {
String pattern = "dd-MM-yy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = new Date();
System.out.println(simpleDateFormat.format(date));
pattern = "MM-dd-yyyy";
simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(date));
pattern = "yyyy-MM-dd HH:mm:ss";
simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(date));
pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(date));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
29-11-17
11-29-2017
2017-11-29 18:47:42
Wednesday November 2017 18:47:42.787+0530
Internalisasi Java - UTC
UTC adalah singkatan dari Co-ordinated Universal Time. Ini adalah standar waktu dan umumnya digunakan di seluruh dunia. Semua zona waktu dihitung secara komparatif dengan UTC sebagai offset. Misalnya, waktu di Kopenhagen, Denmark adalah UTC + 1 artinya waktu UTC ditambah satu jam. Ini tidak tergantung pada penghematan siang hari dan harus digunakan untuk menyimpan tanggal dan waktu dalam database.
Konversi zona waktu
Contoh berikut akan menampilkan konversi berbagai zona waktu. Kami akan mencetak jam dalam sehari dan waktu dalam milidetik. Pertama akan bervariasi dan kedua akan tetap sama.
IOTester.java
import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class I18NTester {
public static void main(String[] args) throws ParseException {
Calendar date = new GregorianCalendar();
date.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
date.set(Calendar.HOUR_OF_DAY, 12);
System.out.println("UTC: " + date.get(Calendar.HOUR_OF_DAY));
System.out.println("UTC: " + date.getTimeInMillis());
date.setTimeZone(TimeZone.getTimeZone("Europe/Copenhagen"));
System.out.println("CPH: " + date.get(Calendar.HOUR_OF_DAY));
System.out.println("CPH: " + date.getTimeInMillis());
date.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println("NYC: " + date.get(Calendar.HOUR_OF_DAY));
System.out.println("NYC: " + date.getTimeInMillis());
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
UTC: 12
UTC: 1511956997540
CPH: 13
CPH: 1511956997540
NYC: 7
NYC: 1511956997540
Zona Waktu yang Tersedia
Contoh berikut akan menampilkan zona waktu yang tersedia dengan sistem.
IOTester.java
import java.text.ParseException;
import java.util.TimeZone;
public class I18NTester {
public static void main(String[] args) throws ParseException {
String[] availableIDs = TimeZone.getAvailableIDs();
for(String id : availableIDs) {
System.out.println("Timezone = " + id);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Timezone = Africa/Abidjan
Timezone = Africa/Accra
...
Timezone = VST
Internalisasi Java - Konversi Unicode dari / ke String
Di java, teks disimpan secara internal dalam format Unicode. Jika input / output dalam format yang berbeda maka diperlukan konversi.
Konversi
Contoh berikut akan menampilkan konversi Unicode String ke UTF8 byte [] dan UTF8 byte [] menjadi Unicode byte [].
IOTester.java
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.text.ParseException;
public class I18NTester {
public static void main(String[] args) throws ParseException, UnsupportedEncodingException {
String unicodeString = "\u00C6\u00D8\u00C5" ;
//convert Unicode to UTF8 format
byte[] utf8Bytes = unicodeString.getBytes(Charset.forName("UTF-8"));
printBytes(utf8Bytes, "UTF 8 Bytes");
//convert UTF8 format to Unicode
String converted = new String(utf8Bytes, "UTF8");
byte[] unicodeBytes = converted.getBytes();
printBytes(unicodeBytes, "Unicode Bytes");
}
public static void printBytes(byte[] array, String name) {
for (int k = 0; k < array.length; k++) {
System.out.println(name + "[" + k + "] = " + array[k]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
UTF 8 Bytes[0] = -61
UTF 8 Bytes[1] = -122
UTF 8 Bytes[2] = -61
UTF 8 Bytes[3] = -104
UTF 8 Bytes[4] = -61
UTF 8 Bytes[5] = -123
Unicode Bytes[0] = -58
Unicode Bytes[1] = -40
Unicode Bytes[2] = -59
Internalisasi Java - Konversi Unicode dari / ke Pembaca / Penulis
Kelas Reader dan Writer adalah kelas aliran berorientasi karakter. Ini dapat digunakan untuk membaca dan mengonversi karakter Unicode.
Konversi
Contoh berikut akan menampilkan konversi Unicode String ke UTF8 byte [] dan UTF8 byte [] ke Unicode byte [] menggunakan kelas Reader dan Writer.
IOTester.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;
import java.text.ParseException;
public class I18NTester {
public static void main(String[] args) throws ParseException, IOException {
String input = "This is a sample text" ;
InputStream inputStream = new ByteArrayInputStream(input.getBytes());
//get the UTF-8 data
Reader reader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));
//convert UTF-8 to Unicode
int data = reader.read();
while(data != -1){
char theChar = (char) data;
System.out.print(theChar);
data = reader.read();
}
reader.close();
System.out.println();
//Convert Unicode to UTF-8 Bytes
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Writer writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
writer.write(input);
writer.close();
String out = new String(outputStream.toByteArray());
System.out.println(out);
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
This is a sample text
This is a sample text
Mencetak