1. klase ng DateTimeFormatter

DateTimeFormatterNakarating ang espesyal na klase sa Date Time API. Ang layunin nito ay gawing mas madali hangga't maaari para sa mga programmer na mag-convert ng petsa at oras sa eksaktong format na gusto nila. At masaya kaming iulat na nagtagumpay ang mga tagalikha ng Java.

Ang paggamit nito ay napakadali. Una, kailangan mong lumikha ng isang DateTimeFormatterklase at ipasa sa isang pattern na tumutukoy kung paano ito ipapakita ang petsa at oras:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

Nasaan dtfang DateTimeFormattervariable. ay isang static na pamamaraan ng klase. At ang pattern ay isang string na tumutukoy sa pattern na gagamitin upang ipakita ang petsa at oras.DateTimeFormatter.ofPattern()DateTimeFormatter

Mga halimbawa

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


02-22-19

Sa halimbawa sa itaas, ginagamit namin ang ofPattern()paraan upang lumikha ng isang DateTimeFormatterbagay batay sa pattern. At sa susunod na linya, ginagamit namin ang format()paraan upang i-convert ang isang LocalDateTimebagay sa isang string. Makikita mo ang resulta sa screen.

Maaari mong ipasa ang halos anumang bagay mula sa Date Time API hanggang sa format()pamamaraan.

Ang static ofPattern()ay napaka-simple din: ito ay nangangailangan ng isang pattern bilang isang argumento at nagbabalik ng isang DateTimeFormatterbagay. Ang pinaka-kagiliw-giliw na bahagi ay matatagpuan sa pattern.


2. Pattern ng pag-format

Ang string na ipinasa bilang isang pattern ay ginagamit bilang isang pattern kapag nagpapakita ng impormasyon. Ang MM ay pinapalitan ng bilang ng buwan, dd ng araw ng buwan, at yy ng bilang ng taon. Ang kaso ng mga titik ay mahalaga.

Ang buong talahanayan para sa mga pattern ng oras na ito ay ito:

Sulat Ibig sabihin
y taon
M buwan
d Araw
H Oras
m Mga minuto
s Mga segundo
S Libo-libong segundo
n Nanoseconds.

Hindi partikular na mahirap tandaan.

Ngunit bakit kasama sa pattern sa halimbawa ang mga paulit-ulit na letrang MM, dd at yy? Well, dito ito nagiging mas kawili-wili.

Pangkalahatang ideya

Ang bilang ng mga titik ay nakakaapekto sa haba ng teksto. Kung mas maraming titik, mas magiging mahaba ang teksto.

Kung ang titik H ay tinukoy nang isang beses, ang 9 na oras ay ipapakita bilang 9, ngunit kung ang titik H ay tinukoy nang dalawang beses sa isang hilera, ang 9 na oras ay ipapakita bilang 09.

Kung ang titik y ay tinukoy ng 2 beses sa isang hilera, pagkatapos ay ang taon ay isinulat gamit ang 2 digit. Kung nangyari ito ng 4 na beses sa isang hilera, pagkatapos ay 4 na numero ang gagamitin.

Kung ang titik M ay tinukoy ng 2 beses sa isang hilera, pagkatapos ay ang bilang ng buwan ay nakasulat. Kung 3 beses sa isang hilera, pagkatapos ay ang pangalan ng buwan (ang unang 3 titik nito) ay ginagamit. Kung 4 na beses sa isang hilera, pagkatapos ay ang buong pangalan ng buwan ay ginagamit.

Halimbawa:

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


February-22-2019


3. Kumpletuhin ang talahanayan ng mga pattern

Ang buong talahanayan ay medyo malaki at sobrang kawili-wili:

Pattern Mga pagkakaiba-iba ng pattern Halimbawa Paglalarawan
y yy, yyyy 19; 2019 taon
M/L M, MM, MMM, MMMM, MMMMM 1; 01; Jan; Enero; J buwan
d d, dd 9; 09 Araw
H H, HH 2; 02 Oras
m m, mm 3; 03 Mga minuto
s s, ss 5; 05 Mga segundo
S S, SS, SSS, ... 1; 12; 123 Libo-libong segundo
n n 123456789 Nanoseconds
G G, GGGG, GGGGG AD; Anno Domini; A; Era
Q/q q, qq, qqq, qqqq 3; 03; Q3; 3rd quarter quarter
w w 13 Linggo ng taon
W W 3 Linggo ng buwan
E EEE, EEEE, EEEEE Mon; Lunes; M Araw
e/c e, ee, eee, eeee, eeeee 1; 01; Mon; Lunes; M Araw
a a PM AM o PM
h h 12 12 oras na orasan.
V VV Europa/Helsinki Time zone
z z zzzz EET; Eastern European Standard Time Time zone
O O OOOO GMT+2; GMT+02:00 Time zone

Siyanga pala, hindi talaga ito kumpletong bersyon. Maaari mong mahanap ang pinaka kumpletong bersyon dito .



4. Oras ng pag-parse

Ang DateTimeFormatterklase ay kawili-wili din para sa kakayahang hindi lamang i-convert ang isang petsa at oras sa isang string ayon sa isang naibigay na pattern, ngunit din upang maisagawa ang reverse operation!

Ang pag-parse ng string ay ang proseso ng paghahati nito sa mga makabuluhang token.

Narito ang hitsura nito:

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


February-23-2019

Una, lumikha kami ng isang DateTimeFormatterbagay at itakda ang pattern na ginagamit para sa pag-parse.

Pagkatapos ay tinatawagan namin ang LocalDate.parse()o LocalTime.parse()o LocalDateTime.parse()pamamaraan at ipasa ang string na i-parse kasama ang DateTimeFormatterbagay, na nauunawaan kung paano i-parse ang naipasa na teksto at kung anong pattern ang dapat gamitin para gawin ito.

Isa pang halimbawa: sa pagkakataong ito ay mag-parse tayo ng oras.

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


23:59:59