CodeGym /Kurslar /Java SELF AZ /Zamanın göstərilməsi - formatlaşdırma

Zamanın göstərilməsi - formatlaşdırma

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. DateTimeFormatter sinfi

Date Time API-ya xüsusi bir sinif DateTimeFormatter əlavə edilib. Onun məqsədi tarix və saatı proqramçının ehtiyaclarına uyğun formata maksimum dərəcədə asanlaşdırmaqdır. Və demək olar ki, Java yaradıcıları buna nail olublar.

Ondan istifadə etmək çox sadədir. Əvvəlcə DateTimeFormatter sinfinin obyektini yaratmaq və ona tarix və saatı göstərmək üçün lazım olan şablonu ötürmək lazımdır:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(şablon);

Harada ki, dtf — DateTimeFormatter tipli dəyişəndir. DateTimeFormatter.ofPattern()DateTimeFormatter sinfinin statik metodudur. Və şablon — tarix və saatın göstərilməsi üçün şablonun təyin edildiyi sətirdir.

Nümunələr

Kod Ekrana çıxış
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM-dd-yy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


02-22-19

Yuxarıdakı nümunədə, ofPattern() metodu vasitəsilə şablon sətirinə əsaslanan DateTimeFormatter obyektini yaradırıq. Və növbəti sətrdə format() metodu vasitəsilə LocalDateTime tipli obyekti sətirə çevirmək üçün istifadə edirik. Nəticəni ekranda görürsünüz.

format() metoduna Date Time API-dan demək olar hər hansı obyekti ötürmək olar.

Statik metod ofPattern() çox sadədir: parametr kimi şablon sətrini qəbul edir və DateTimeFormatter tipli obyekt qaytarır. Ən maraqlı hiss şablonun içindədir.


2. Format şablonu

Şablon kimi istifadə olunan string, məlumatın göstərilməsində istifadə edilir. MM ayın nömrəsini, dd günün nömrəsini, yy ilin nömrəsini əvəz edir. Hərflərin registri əhəmiyyətlidir.

Zamanın çevrilməsi üzrə tam cədvəl belə görünür:

Hərf Təyinat
y İl (Year)
M Ay (Month)
d Gün (Day)
H Saat (Hours)
m Dəqiqə (Minutes)
s Saniyə (Seconds)
S Saniyənin minlərlə hissəsi
n Nanosaniyə.

Əslində yadda saxlamaq çox çətin deyil.

Bəs onda niyə nümunədəki şablonda hərflər MM, dd və yy iki dəfə yazılmışdı? Bax burada iş maraqlı olur.

Ümumi ideya

Hərflərin sayı mətnin uzunluğuna təsir göstərir. Nə qədər çox hərf yazılsa, mətn bir o qədər uzun olur.

Əgər H hərfi bir dəfə yazılırsa, onda 9 saat belə göstərilir: 9, amma əgər H hərfi ardıcıl iki dəfə yazılırsa, onda 9 saat belə göstərilir: 09.

Əgər y hərfi ardıcıl 2 dəfə yazılırsa, il iki rəqəmlə yazılır, 4 dəfə ardıcıl yazılırsa — 4 rəqəm ilə yazılır.

Əgər M hərfi ardıcıl 2 dəfə yazılırsa, ayın nömrəsi yazılır, 3 dəfə ardıcıl yazılırsa, ayın adı (3 ilk hərf), 4 dəfə ardıcıl yazılırsa, ayın tam adı yazılır.

Nümunə:

Kod Ekran çıxışı
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


February-22-2019


3. Şablonların tam cədvəli

Şablonların tam cədvəli kifayət qədər böyükdür və çox maraqlıdır:

Şablon Şablonun variasiyaları Nümunə Təsvir
y yy, yyyy 19; 2019 İl
M/L M, MM, MMM, MMMM, MMMMM 1; 01; Jan; January; J Ay
d d, dd 9; 09 Gün
H H, HH 2; 02 Saat
m m, mm 3; 03 Dəqiqələr
s s, ss 5; 05 Saniyələr
S S, SS, SSS, ... 1; 12; 123 Saniyənin min hissələri
n n 123456789 Nanosaniyələr
G G, GGGG, GGGGG AD; Anno Domini; A; Era
Q/q q, qq, qqq, qqqq 3; 03; Q3; 3rd quarter Rüb
w w 13 İlin həftəsi
W W 3 Ayın həftəsi
E EEE, EEEE, EEEEE Mon; Monday; M Həftənin günü
e/c e, ee, eee, eeee, eeeee 1; 01; Mon; Monday; M Həftənin günü
a a PM AM və ya PM
h h 12 1-12 saatlıq vaxt.
V VV Europe/Helsinki Zaman zonası
z z zzzz EET;  Eastern European Standard Time Zaman zonası
O O OOOO GMT+2;  GMT+02:00 Zaman zonası

Bu, yeri gəlmişkən, ən tam variant deyil. Ən tamam olanı buradan tapa bilərsiniz:

https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/time/format/DateTimeFormatter.html



4. Zamanın parsinqi

DateTimeFormatter klası həmçinin yalnız tarix və zamanı verilmiş şablona uyğun string-ə çevirməklə qalmır, həm də digər istiqamətdə işləyə bilər!

String-i analiz edib təhlil etmək parsinq adlanır, bu da parse sözündən gəlir.

Bu proses belə görünür:

Kod Ekranda çıxış
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse("February-23-2019", dtf);
System.out.println(date);


February-23-2019

Əvvəlcə biz DateTimeFormatter obyektini yaradırıq və parsinq şablonunu təyin edirik.

Sonra LocalDate.parse(), LocalTime.parse() və ya LocalDateTime.parse() metodunu çağırırıq və bu metoda pars edilməli olan string-in özünü və bu string-in parsinqini başa düşən DateTimeFormatter obyektini ötürürük.

Daha bir nümunə: bu dəfə zaman parsinqi ilə.

Kod Ekranda çıxış
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse("23:59:59", dtf);
System.out.println(time);


23:59:59

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION