JavaRush /Kurslar /All lectures for UZ purposes /Vaqtni ko'rsatish - formatlash

Vaqtni ko'rsatish - formatlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

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
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM-dd-yy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


02-22-19

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
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


February-22-2019


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
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse("February-23-2019", dtf);
System.out.println(date);


February-23-2019

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
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse("23:59:59", dtf);
System.out.println(time);


23:59:59

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION