1. Ipinapakilala ang Date Time API
Hindi nagustuhan ng mga tagalikha ng Java ang sitwasyon sa mga klase ng Petsa at Kalendaryo. Maganda sila noong araw nila, pero nagbabago ang panahon. At isang bagay na simple, makapangyarihan at maaasahan ay naging kailangan. At sa paglabas ng Java 8 (15 taon pagkatapos Calendar
lumitaw), ipinakilala ang Java Date Time API . Ito ay isang hanay ng mga klase na dapat malutas ang bawat posibleng gawain na may kinalaman sa oras.
Napakaraming klase kaya nahati sila sa ilang mga pakete:
Ang java.time
package ay ang batayang pakete para sa Java Date Time API: naglalaman ito ng mga klase tulad ng LocalDate
, LocalTime
, LocalDateTime
, Instant
, Period
, at Duration
. Ang lahat ng mga bagay ng mga klase na ito ay immutable
, na nangangahulugang hindi na sila mababago pagkatapos ng paglikha.
Ang java.time.format
pakete ay naglalaman ng mga klase para sa pag-format ng oras, ibig sabihin, pag-convert ng mga oras (at mga petsa) sa mga string at vice versa. Halimbawa, naglalaman ito ng maraming nalalaman DateTimeFormatter
na klase, na pumapalit sa SimpleDateFormat
klase.
Ang java.time.zone
package ay naglalaman ng mga klase para sa pagtatrabaho sa mga time zone. Naglalaman ito ng mga klase tulad ng TimeZone
at ZonedDateTime
. Kung nagsusulat ka ng server code para sa mga kliyenteng matatagpuan sa iba't ibang bahagi ng mundo, kakailanganin mo talaga ang mga klaseng ito.
2. LocalDate
klase
Ang una at pinakakapaki-pakinabang na klase mula sa Date Time API na titingnan natin ay ang LocalDate
klase. Tulad ng maaari mong hulaan mula sa pangalan nito, ang klase na ito ay idinisenyo upang gumana sa mga petsa.
Ang mga bagay ng klase na ito ay hindi nagbabago pagkatapos nilang malikha, ibig sabihin, ang LocalDate
klase ay hindi nababago. Ngunit ang pag-aari na ito ay nagdaragdag ng pagiging simple at pagiging maaasahan sa klase. Lalo na kung maraming mga thread (mga thread ng pagpapatupad) ang nakikipag-ugnayan sa naturang bagay nang sabay.
Upang lumikha ng isang bagong LocalDate
bagay, kailangan mong gumamit ng isa sa mga static na pamamaraan. Narito ang isang listahan ng mga pangunahing.
Pagkuha ng kasalukuyang petsa
Upang makuha ang kasalukuyang petsa, kailangan mong gamitin ang static now()
na paraan. Ito ay mas madali kaysa sa tila:
LocalDate today = LocalDate.now();
Nasaan today
ang LocalDate
variable, at LocalDate.now()
isang tawag sa static now()
na paraan ng LocalDate
klase.
Halimbawa:
Code | Output ng console |
---|---|
|
|
Pagkuha ng petsa sa isang partikular na time zone
Ang LocalDate
klase ay mayroon ding variation ng now(ZoneId)
paraan na nagbibigay-daan sa iyong makuha ang kasalukuyang petsa sa isang partikular na time zone.
Para magawa ito, kailangan namin ng isa pang klase — ang ZoneId
klase (java.time.ZoneId). Mayroon itong of()
paraan na nagbabalik ng isang ZoneId
bagay na binigyan ng pangalan ng time zone.
Upang matukoy ang kasalukuyang petsa sa Shanghai, kailangan mong isulat ang sumusunod na code:
Code | Output ng console |
---|---|
|
|
Makakahanap ka ng listahan ng mga pangalan ng lahat ng time zone sa Internet.
3. Pagkuha ng isang tiyak na petsa
Upang makakuha ng isang LocalDate
bagay na kumakatawan sa isang tiyak na petsa, kailangan mong gamitin ang static of()
na paraan. Ang lahat dito ay napakasimple at malinaw din:
LocalDate date = LocalDate.of(2019, Month.FEBRUARY, 22);
Nasaan date
ang LocalDate
variable, at isang tawag sa static na paraan ng klase.LocalDate.of()
of()
LocalDate
Dito makikita natin ang FEBRUARY
pare-pareho ng Month
klase (java.time.Month) na ginagamit upang tukuyin ang Pebrero bilang buwan.
Maaari mo ring tiyakin ang buwan sa lumang paraan — gamit ang isang numero:
LocalDate date = LocalDate.of(2019, 2, 22);
Dalawa? Sa halip na Pebrero? Nangangahulugan ba iyon na ang mga buwan ay muling binibilang mula sa isa?
Oo, halos 20 taon pagkatapos ng paglikha ng Java, ang mga buwan ay huminto sa pagbilang mula sa zero.
Halimbawa:
Code | Output ng console |
---|---|
|
|
Pagkuha ng petsa ayon sa index ng araw
May isa pang kawili-wiling paraan upang lumikha ng petsa: gamit ang ofYearDay
pamamaraan, maaari kang makakuha ng petsa batay lamang sa bilang ng taon at index ng araw sa taon. Narito ang pangkalahatang hitsura:
LocalDate date = LocalDate.ofYearDay(year, day);
Nasaan year
ang bilang ng taon at day
ang index ng araw sa taon.
Halimbawa:
Code | Output ng console |
---|---|
|
|
Ang ika-100 araw ng 2019 ay ika-10 ng Abril.
Pagkuha ng Unix date
Naaalala mo ba na Date
ang mga bagay ay palaging nag-iimbak ng oras bilang bilang ng mga millisecond mula noong Enero 1, 1970? Upang matiyak na hindi palalampasin ng mga programmer ang magandang lumang araw, ang LocalDate
klase ay nakakuha ng isang ofEpochDay()
paraan, na nagbabalik ng petsa na nakalkula mula sa Enero 1, 1970. Narito ang pangkalahatang hitsura:
LocalDate date = LocalDate.ofEpochDay(day);
Saan day
ang bilang ng mga araw na lumipas mula noong Enero 1, 1970.
Halimbawa:
Code | Output ng console |
---|---|
|
|
4. Pagkuha ng mga elemento ng isang petsa
Imposibleng baguhin LocalDate
ang mga bagay, ngunit maaari kang makakuha ng mga indibidwal na elemento ng nakaimbak na petsa. LocalDate
Ang mga bagay ay may ilang mga pamamaraan para dito:
Pamamaraan | Paglalarawan |
---|---|
|
Ibinabalik ang taon ng isang partikular na petsa |
|
Ibinabalik ang buwan ng petsa: isa sa ilang mga constantJANUARY, FEBRUARY, ...; |
|
Ibinabalik ang index ng buwan ng petsa. Enero == 1. |
|
Ibinabalik ang index ng araw ng buwan |
|
Ibinabalik ang index ng araw mula sa simula ng taon |
|
Ibinabalik ang araw ng linggo: isa sa ilang mga constantMONDAY, TUESDAY, ...; |
|
Ibinabalik ang panahon: alinman sa BCE (Before Current Era) at CE (Current Era) |
Halimbawa:
Code | Output ng console |
---|---|
|
|
5. Pagbabago ng petsa sa isang LocalDate
bagay
Naglalaman ang LocalDate
klase ng ilang paraan na nagbibigay-daan sa iyong magtrabaho sa mga petsa. Ang pagpapatupad ng mga pamamaraan na ito ay kahalintulad sa mga pamamaraan ng String
klase: hindi nila binabago ang umiiral LocalDate
na bagay, ngunit sa halip ay nagbabalik ng bago na may nais na data.
Narito ang mga pamamaraan ng LocalDate
klase:
Pamamaraan | Paglalarawan |
---|---|
|
Nagdaragdag ng tinukoy na bilang ng mga araw sa petsa |
|
Nagdaragdag ng mga linggo sa petsa |
|
Nagdaragdag ng mga buwan sa petsa |
|
Nagdaragdag ng mga taon sa petsa |
|
Ibinabawas ang mga araw mula sa petsa |
|
Ibinabawas ang mga linggo mula sa petsa |
|
Ibinabawas ang mga buwan mula sa petsa |
|
Ibinabawas ang mga taon mula sa petsa |
Halimbawa:
Code | Output ng console |
---|---|
|
|
Ang birthday object
tinatawag nating mga pamamaraan ay hindi nagbabago. Sa halip, ang mga pamamaraan nito ay nagbabalik ng mga bagong bagay na naglalaman ng nais na data.
GO TO FULL VERSION