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ış |
---|---|
|
|
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ışı |
---|---|
|
|
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ış |
---|---|
|
|
Ə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ış |
---|---|
|
|
GO TO FULL VERSION