1. Kelas DateTimeFormatter

Kelas khas DateTimeFormattermemasuki API Masa Tarikh. Tujuannya adalah untuk menjadikannya semudah mungkin bagi pengaturcara menukar tarikh dan masa ke dalam format yang tepat yang mereka inginkan. Dan kami gembira untuk melaporkan bahawa pencipta Java berjaya.

Menggunakannya sangat mudah. Pertama, anda perlu mencipta DateTimeFormatterkelas dan lulus dalam corak yang menentukan cara ia akan memaparkan tarikh dan masa:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

Di manakah dtfpembolehubah DateTimeFormatter. ialah kaedah statik kelas . Dan corak ialah rentetan yang menentukan corak yang akan digunakan untuk memaparkan tarikh dan masa.DateTimeFormatter.ofPattern()DateTimeFormatter

Contoh

Kod Output konsol
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM-dd-yy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


02-22-19

Dalam contoh di atas, kami menggunakan ofPattern()kaedah untuk mencipta DateTimeFormatterobjek berdasarkan corak. Dan dalam baris seterusnya, kami menggunakan format()kaedah untuk menukar LocalDateTimeobjek menjadi rentetan. Anda lihat hasilnya pada skrin.

Anda boleh menghantar hampir semua objek dari API Masa Tarikh kepada format()kaedah.

Statik ofPattern()juga sangat mudah: ia memerlukan corak sebagai hujah dan mengembalikan DateTimeFormatterobjek. Bahagian yang paling menarik terdapat dalam corak.


2. Corak pemformatan

Rentetan yang dihantar sebagai corak digunakan sebagai corak apabila memaparkan maklumat. MM digantikan dengan nombor bulan, dd dengan hari bulan dan yy dengan nombor tahun. Kes surat itu penting.

Jadual penuh untuk corak masa ini ialah ini:

surat Maknanya
y tahun
M bulan
d Hari
H Jam
m minit
s Detik
S Beribu-ribu saat
n Nanosaat.

Tidak terlalu sukar untuk diingati.

Tetapi mengapa corak dalam contoh termasuk huruf berulang MM, dd dan yy? Nah, di sinilah ia menjadi lebih menarik.

Idea umum

Bilangan huruf mempengaruhi panjang teks. Semakin banyak huruf, semakin panjang teksnya.

Jika huruf H dinyatakan sekali, maka 9 jam akan dipaparkan sebagai 9, tetapi jika huruf H dinyatakan dua kali berturut-turut, maka 9 jam akan dipaparkan sebagai 09.

Jika huruf y dinyatakan 2 kali berturut-turut, maka tahun ditulis menggunakan 2 digit. Jika ia berlaku 4 kali berturut-turut, maka 4 digit digunakan.

Jika huruf M dinyatakan 2 kali berturut-turut, maka nombor bulan itu ditulis. Jika 3 kali berturut-turut, maka nama bulan (3 huruf pertamanya) digunakan. Jika 4 kali berturut-turut, maka nama penuh bulan digunakan.

Contoh:

Kod Output konsol
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


February-22-2019


3. Jadual corak yang lengkap

Meja penuh agak besar dan sangat menarik:

Corak Variasi corak Contoh Penerangan
y yy, yyyy 19; 2019 tahun
M/L M, MM, MMM, MMMM, MMMMM 1; 01; Jan; Januari; J bulan
d d, dd 9; 09 Hari
H H, HH 2; 02 Jam
m m, mm 3; 03 minit
s s, ss 5; 05 Detik
S S, SS, SSS, ... 1; 12; 123 Beribu-ribu saat
n n 123456789 Nanosaat
G G, GGGG, GGGGG AD; Anno Domini; A; Era
S/q q, qq, qqq, qqqq 3; 03; S3; suku ke-3 Suku
w w 13 Minggu dalam setahun
W W 3 Minggu dalam bulan
E EEE, EEEE, EEEEE isn; Isnin; M Hari dalam seminggu
e/c e, ee, eee, eeee, eeeee 1; 01; isn; Isnin; M Hari dalam seminggu
a a PM Am atau PM
h h 12 Jam 12 jam.
V VV Eropah/Helsinki Zon masa
z z zzzz EET; Waktu Piawai Eropah Timur Zon masa
O O OOOO GMT+2; GMT+02:00 Zon masa

By the way, ini sebenarnya bukan versi lengkap. Anda boleh mencari versi paling lengkap di sini .



4. Masa menghurai

Kelas ini DateTimeFormatterjuga menarik kerana keupayaannya untuk bukan sahaja menukar tarikh dan masa kepada rentetan mengikut corak yang diberikan, tetapi juga untuk melaksanakan operasi terbalik!

Menghuraikan rentetan ialah proses membahagikannya kepada token yang bermakna.

Inilah rupanya:

Kod Output konsol
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
LocalDate date = LocalDate.parse("February-23-2019", dtf);
System.out.println(date);


February-23-2019

Pertama, kami mencipta DateTimeFormatterobjek dan menetapkan corak yang digunakan untuk menghurai.

Kemudian kami memanggil kaedah LocalDate.parse()atau LocalTime.parse()atau LocalDateTime.parse()dan lulus dalam rentetan untuk dihuraikan bersama-sama dengan DateTimeFormatterobjek, yang memahami cara menghuraikan teks yang diluluskan dan corak yang harus digunakan untuk melakukannya.

Contoh lain: kali ini kita akan menghuraikan masa.

Kod Output konsol
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse("23:59:59", dtf);
System.out.println(time);


23:59:59