1. DateTimeFormatter klassi
Date Time API ga DateTimeFormatter degan maxsus klass qo'shildi. Bu klassning maqsadi — sanani va vaqtni aynan dasturchiga kerak bo'lgan formatga osonlik bilan aylantirish. Java yaratuvchilari buni uddalay olishdi deb aytish mumkin.
Uni ishlatish juda oson. Avval DateTimeFormatter obyekti yaratish kerak va unga sana va vaqt ko'rsatiladigan shablonni berish kerak:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(шаблон);
Bu yerda dtf — bu DateTimeFormatter tipidagi o'zgaruvchi. DateTimeFormatter.ofPattern() — bu DateTimeFormatter klassining statik metodi. А шаблон — bu sana va vaqt ko'rsatiladigan shablonni belgilaydigan satr.
Misollar
| Kod | Ekranga chiqarish |
|---|---|
|
|
Yuqoridagi misolda biz ofPattern() metodi yordamida satr-shablon asosida DateTimeFormatter obyektini yaratamiz. Keyingi satrda format() metodi orqali LocalDateTime tipidagi obyektni satrga aylantiramiz. Natijani ekranda ko'rishingiz mumkin.
format() metodiga deyarli har qanday Date Time API obyekti o’tkazilishi mumkin.
Statik metod ofPattern() ham juda oddiy: parametr sifatida satr-shablonni qabul qiladi va DateTimeFormatter tipidagi obyektni qaytaradi. Eng qiziq narsa shablon ichida!
2. Formatlash shabloni
Pattern sifatida uzatilgan satr, ma’lumot chiqishda shablon sifatida ishlatiladi. MM oy raqamiga, dd oy kuniga, yy yil raqamiga almashtiriladi. Harflarning registriga ahamiyat beriladi.
To'liq vaqtni o'zgartirish jadvali quyidagicha:
| Harf | Nomlanishi |
|---|---|
| y | Yil (Year) |
| M | Oy (Month) |
| d | Kun (day) |
| H | Soatlar (Hours) |
| m | Daqiqalar (Minutes) |
| s | Soniya (Seconds) |
| S | Millisoniya |
| n | Nanosoniya. |
Aslida eslab qolish qiyin emas.
Shu o'rinda, misoldagi shablonda nima uchun harflar MM, dd va yy ikki marta yozilgan? Mana shunda qiziqarli joyi boshlanadi.
Umumiy g'oya
Harflar soni matn uzunligiga ta’sir qiladi. Qanchalik ko'p harf bo'lsa, matn shunchalik uzun bo'ladi.
Agar H harfi bir marta ko'rsatilsa, 9 soat 9 sifatida ko'rsatiladi, agar H harfi ikki marta ketma-ket ko'rsatilsa, 9 soat 09 sifatida ko'rsatiladi.
Agar y harfi 2 marta ketma-ket ko'rsatilsa, yil 2 raqam bilan yoziladi, agar 4 marta ketma-ket — 4 raqam bilan yoziladi.
Agar M harfi 2 marta ketma-ket ko'rsatilsa, oy raqami yoziladi, agar 3 marta ketma-ket, oy nomi (3 harf), agar 4 marta ketma-ket, to'liq oy nomi yoziladi.
Misol:
| Kod | Ekranga chiqarish |
|---|---|
|
|
3. To’liq shablonlar jadvali
To’liq jadval juda katta va juda qiziqarli:
| Shablon | Shablon variatsiyalari | Misol | Tavsif |
|---|---|---|---|
| y | yy, yyyy | 19; 2019 | Yil |
| M/L | M, MM, MMM, MMMM, MMMMM | 1; 01; Jan; January; J | Oy |
| d | d, dd | 9; 09 | Kun |
| H | H, HH | 2; 02 | Soatlar |
| m | m, mm | 3; 03 | Daqiqalar |
| s | s, ss | 5; 05 | Soniya |
| S | S, SS, SSS, ... | 1; 12; 123 | Millisoniya |
| n | n | 123456789 | Nanosoniya |
| G | G, GGGG, GGGGG | AD; Anno Domini; A; | Era |
| Q/q | q, qq, qqq, qqqq | 3; 03; Q3; 3rd quarter | Chorak |
| w | w | 13 | Yil haftasi |
| W | W | 3 | Oy haftasi |
| E | EEE, EEEE, EEEEE | Mon; Monday; M | Hafta kuni |
| e/c | e, ee, eee, eeee, eeeee | 1; 01; Mon; Monday; M | Hafta kuni |
| a | a | PM | AM yoki PM |
| h | h | 12 | 1-12 soat vaqti. |
| V | VV | Europe/Helsinki | Vaqt zonasi |
| z | z zzzz | EET; Eastern European Standard Time | Vaqt zonasi |
| O | O OOOO | GMT+2; GMT+02:00 | Vaqt zonasi |
Bu, albatta, eng to'liq variant emas. Eng to'liq quyidagi havolada:
https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/time/format/DateTimeFormatter.html
4. Vaqtni tahlil qilish
DateTimeFormatter klassi yana shu bilan qiziqki, u nafaqat vaqt va sanani belgilangan shablonga teskari o’tkazib qo'ya oladi!
Satrlash va ajratib olish tahlil qilish deyiladi, ya’ni parse.
Mana, qanday jarayon asosan boradi:
| Kod | Ekranga chiqarish |
|---|---|
|
|
Avval DateTimeFormatter obyektini yaratamiz va unda parslash shablonini belgilaymiz.
Keyin LocalDate.parse() yoki LocalTime.parse() yoki LocalDateTime.parse() metodini chaqiramiz va bu metodga parslash kerak bo'lgan satrni va DateTimeFormatter obyektini uzatamiz, u qanday va qaysi shablon bo'yicha matnni parslashni tushunadi.
Boshqa misol: bu safar vaqtni parslash bilan.
| Kod | Ekranga chiqarish |
|---|---|
|
|
GO TO FULL VERSION