1. ZonedDateTime
klase
May isa pang napaka-interesante na klase sa Date Time API: ang ZonedDateTime
klase. Ang pangunahing layunin nito ay gawin itong maginhawa upang gumana sa mga petsa sa iba't ibang time zone.
LocalDate
ay mahusay para sa kumakatawan sa mga petsa. Halimbawa, mga kaarawan. Ang aking kaarawan ay ika-15 ng Marso saan man ako naroroon. Ito ay isang halimbawa ng isang petsa.
LocalTime
Mahusay na ilarawan ang oras, tulad ng oras na itinakda sa alarm clock: Itinakda ko ang alarma para sa 5:00 am at hindi mahalaga kung nasaan ako. 5:00 am ay 5:00 am. Ito ay isang halimbawa ng pagtatrabaho sa oras.
Ngayon sabihin natin na nagsusulat kami ng application na nagbu-book ng mga flight. Lumilipad at dumarating ang mga eroplano batay sa lokal na oras. Ang eroplano ay nasa himpapawid para sa isang nakapirming oras, ngunit ang mga time zone ay maaaring magbago.
Mga time zone
Sa pamamagitan ng paraan, ang mga time zone ay isang tunay na gulo. At kung sa tingin mo ay mayroong 24 na time zone, ikaw ay lubos na nagkakamali.
Halimbawa, ang oras sa India ay naiiba sa Greenwich Mean Time ng limang at kalahating oras: GMT+5:30
. Ang ilang mga bansa ay lumipat sa daylight saving time, at ang iba ay hindi. Higit pa rito, lumilipat ang iba't ibang bansa sa oras ng tag-araw sa iba't ibang oras ng taon.
At ang ilang bansa ay nagpapasa ng mga batas na kanselahin ang daylight saving time, o muling ipinakilala ito, o kanselahin itong muli.
Sa anumang kaganapan, ang mundo ay may mga time zone, at sa loob ng bawat time zone ay may isang oras. Ang oras sa iba't ibang mga zone ay maaaring magkasabay sa ilang partikular na panahon ng taon, at pagkatapos ay mag-iba sa iba pang mga panahon. Ang mga time zone ay karaniwang ipinangalan sa mga pangunahing lungsod na matatagpuan sa kanila: Europe/Monaco
, Asia/Singapore
, ngunit mayroon ding mga pagbubukod — US/Pacific
.
Opisyal, mayroong 599 time zone sa ngayon. Pag-isipan ito: 599. Malayo iyon sa 24. Maligayang pagdating sa pandaigdigang mundo.
Ang ZoneId
klase mula sa java.time
package ay ginagamit upang mag-imbak ng time zone sa Java.
Sa pamamagitan ng paraan, mayroon itong static getAvailableZoneIds()
na pamamaraan, na nagbabalik ng hanay ng lahat ng kasalukuyang kilalang time zone. Upang makakuha ng isang listahan ng lahat ng mga zone, kailangan mong isulat ang sumusunod na code:
Code | Output ng console (bahagyang) |
---|---|
|
|
Upang makakuha ng isang ZoneId
bagay sa pamamagitan ng pangalan nito, kailangan mong gamitin ang static of()
na paraan;
Code | Tandaan |
---|---|
|
|
2. Paglikha ng isang ZonedDateTime
bagay
Kapag lumilikha ng isang ZonedDateTime
bagay, kailangan mong tawagan ang static now()
na pamamaraan ng klase at ipasa ang isang ZoneId
bagay dito.
Code | Output ng console |
---|---|
|
|
Kung hindi mo ipapasa ang isang ZoneId
bagay sa now()
pamamaraan (at pinapayagan iyon), awtomatikong tinutukoy ang time zone batay sa mga setting ng computer na nagpapatakbo ng program.
Halimbawa:
Code | Output ng console |
---|---|
|
|
Pag-convert ng isang pandaigdigang petsa sa isang lokal
Ang isa sa mga kagiliw-giliw na tampok ng ZonedDateTime
ay ang kakayahang mag-convert sa isang lokal na petsa at oras. Halimbawa:
ZoneId zone = ZoneId.of("Africa/Cairo");
ZonedDateTime cairoTime = ZonedDateTime.now(zone);
LocalDate localDate = cairoTime.toLocalDate();
LocalTime localTime = cairoTime.toLocalTime();
LocalDateTime localDateTime = cairoTime.toLocalDateTime();
3. Paggawa gamit ang oras
Tulad ng LocalDateTime
klase, ang ZonedDateTime
klase ay maraming paraan para makakuha ng mga indibidwal na elemento ng isang petsa at oras. Narito ang isang listahan ng mga pamamaraang ito:
|
Ibinabalik ang taon ng isang partikular na petsa |
|
Ibinabalik ang buwan ng petsa: isa sa ilang mga constant —JANUARY, FEBRUARY, ...; |
|
Ibinabalik ang index ng buwan ng petsa. Enero == 1 |
|
Ibinabalik ang index ng araw ng buwan |
|
Ibinabalik ang araw ng linggo: isa sa ilang mga constants —MONDAY, TUESDAY, ...; |
|
Ibinabalik ang index ng araw ng taon |
|
Ibinabalik ang mga oras |
|
Ibinabalik ang mga minuto |
|
Ibinabalik ang mga segundo |
|
Ibinabalik ang mga nanosecond |
Ang lahat ng mga pamamaraan ay perpektong kahalintulad sa mga pamamaraan ng LocalDateTime
klase. At, siyempre, ang ZonedDateTime
klase ay may mga pamamaraan na nagpapahintulot sa iyo na magtrabaho kasama ang mga petsa at oras. Iyon ay sinabi, ang bagay kung saan tinawag ang mga pamamaraan ay hindi nagbabago. Sa halip, nagbabalik sila ng bagong ZonedDateTime
bagay:
Paraan | Paglalarawan |
---|---|
|
Nagdaragdag ng mga taon sa petsa |
|
Nagdaragdag ng mga buwan sa petsa |
|
Nagdaragdag ng mga araw sa petsa |
|
Nagdadagdag ng mga oras |
|
Nagdadagdag ng mga minuto |
|
Nagdadagdag ng mga segundo |
|
Nagdaragdag ng mga nanosecond |
|
Ibinabawas ang mga taon mula sa petsa |
|
Ibinabawas ang mga buwan mula sa petsa |
|
Ibinabawas ang mga araw mula sa petsa |
|
Nagbabawas ng mga oras |
|
Nagbabawas ng minuto |
|
Nagbabawas ng mga segundo |
|
Ibinabawas ang mga nanosecond |
Hindi kami magbibigay ng anumang mga halimbawa, dahil sa tingin namin ang lahat ng bagay dito ay malinaw sa pamamagitan ng pagkakatulad sa mga klase na isinasaalang-alang namin.