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