1. Date
oras ng klase at Unix
Sa simula pa lamang ng Java, ang wika ay may espesyal na klase para sa pagtatrabaho sa mga oras at petsa — Date
. Sa paglipas ng panahon, lumitaw ang ilang higit pang mga klase para sa pagtatrabaho sa mga petsa, ngunit patuloy na ginagamit ng mga programmer ang Date
klase hanggang ngayon.
Ito ay dahil ito ay napaka-simple at maginhawa. At bilang isang programmer, tiyak na makakaharap mo ito sa anumang totoong proyekto. Kung gagamitin mo ito o hindi ay iyong pinili, ngunit dapat mong malaman ito. Kaya bigyan ito ng ilang minuto ng iyong mahalagang oras.
Ano ang nakakapagpaganda ng Date
klase? Ang pagiging simple nito.
Ang Date
klase ay nag-iimbak ng impormasyon ng petsa at oras bilang ang bilang ng mga millisecond na lumipas mula noong Enero 1, 1970. Iyon ay maraming millisecond, kaya ang long
uri ay ginagamit upang iimbak ang mga ito.
Bakit mula noong 1970 partikular? Ito ang tinatawag na Unix time : ito ay kung paano ang Unix operating system, na siyang lolo ng lahat ng modernong operating system, ay nagpapanatili ng oras.
Ngunit napakadali mong malalaman kung gaano katagal ang lumipas sa pagitan ng dalawang petsa: ibawas lang ang isang petsa mula sa isa, at makukuha mo ang pagkakaiba ng oras sa pagitan ng mga petsa sa pinakamalapit na millisecond.
Narito ang ilang kapaki-pakinabang na halimbawa ng pakikipagtulungan sa Date
klase.
2. Pagkuha ng kasalukuyang petsa
Upang makuha ang kasalukuyang oras at petsa, lumikha lamang ng isang Date
bagay. Ang bawat bagong bagay ay nag-iimbak ng oras kung kailan ito nilikha. Mukhang napakasimple:
Date current = new Date();
Pagkatapos isagawa ang utos na ito, current
mag-iimbak ang variable ng reference sa nilikhang Date
bagay, na panloob na mag-iimbak ng oras ng paglikha nito — ang bilang ng mga millisecond na lumipas mula noong Enero 1, 1970.
Ipinapakita ang kasalukuyang petsa sa screen
Upang ipakita ang kasalukuyang petsa, simpleng: a) lumikha ng bagong Date
bagay, b) i-print ito sa screen gamit ang System.out.println()
pamamaraan.
Halimbawa:
Code | Output ng console |
---|---|
|
|
Narito ang ibig sabihin ng output ng console:
Text | Interpretasyon |
---|---|
Huwebes rsday | Huwebes |
Pebrero 21 | Pebrero 21 |
14:01:34 | oras : minuto : segundo |
EET | Time zone: East European Time |
2019 | taon |
3. Pagtatakda ng isang tiyak na petsa
Naisip namin kung paano makuha ang kasalukuyang oras, ngunit paano kami gagawa ng isang Date
bagay na nag-iimbak ng ibang petsa o oras?
Muli, ang lahat ay simple dito. Upang magtakda ng isang tiyak na petsa, kailangan mong magsulat ng code na tulad nito:
Date birthday = new Date(year, month, day);
Ang lahat ay simple at halata, ngunit mayroong dalawang mga nuances na dapat malaman:
- Ang taon ay dapat bilangin mula 1900.
- Ang mga buwan ay binibilang mula sa zero.
Ito ay isa pang legacy ng Unix operating system: sa Unix, ang mga programmer ay tinukoy ang taon gamit ang dalawang digit. Sa halip na 1977, 77 lang ang isinulat nila. Kaya 77 ang tamang taon kung bibilangin natin mula 1900.
Halimbawa, ipinanganak ako noong Marso 21, 1989. Ang Marso ay ang ikatlong buwan, kaya kailangan kong isulat:
Code | Output ng console |
---|---|
|
|
Ang mga buwan ay binibilang mula sa zero, ngunit ang mga araw ay hindi. Medyo kakaiba iyon, tama ba?
Sa tingin namin, ang mga totoong programmer ay dapat na nanaig at binibilang din ang mga araw ng buwan mula sa zero. Oh, itong mga conformist 🙂
Pagtatakda ng isang tiyak na oras
Ang pagtatakda ng isang tiyak na oras ay medyo simple din: para dito, kailangan mong magsulat ng isang pahayag tulad nito:
Date birthday = new Date(year, month, day, hour, minutes, seconds);
Ang mga oras, minuto at segundo ay binibilang mula sa zero: hayaan ang programmer sa loob mo na makahinga ng maluwag.
Halimbawa:
Code | Output ng console |
---|---|
|
|
Itinakda namin ang oras na 12:15 at ang petsa ng Hunyo 4, 2005 . Ito ay medyo mahirap para sa isang hindi programmer na basahin, ngunit ito ay gumagana ayon sa nararapat.
4. Paggawa gamit ang mga elemento ng isang petsa
Mas marami kang magagawa sa isang Date
bagay kaysa ipakita lang ito. Mayroon itong mga pamamaraan na nagbibigay-daan sa iyong makakuha ng mga indibidwal na elemento ng internally stored na petsa:
Pamamaraan | Paglalarawan |
---|---|
|
Ibinabalik ang taon ng petsa na may kaugnayan sa 1900. |
|
Ibinabalik ang buwan ng petsa (ang mga buwan ay binibilang mula sa zero) |
|
Ibinabalik ang araw ng buwan |
|
Ibinabalik ang araw ng linggo |
|
Ibinabalik ang mga oras |
|
Ibinabalik ang mga minuto |
|
Ibinabalik ang mga segundo |
Halimbawa:
Code | Output ng console | Tandaan |
---|---|---|
|
|
2005 Hunyo araw ng buwan Sabado |
Sa pamamagitan ng paraan, ang isang Date
bagay ay hindi lamang nagbibigay-daan sa iyo na makakuha ng mga indibidwal na elemento ng isang petsa, ngunit baguhin din ang mga ito:
Pamamaraan | Paglalarawan |
---|---|
void setYear(int year) |
Binabago ang taon ng petsa. Ang taon ay ipinahiwatig na may kaugnayan sa 1900. |
void setMonth(int month) |
Binabago ang buwan ng petsa (ang mga buwan ay binibilang mula sa zero) |
void setDate(int date) |
Binabago ang araw ng buwan |
void setHours(int hours) |
Nagbabago ng oras |
void setMinutes(int minutes) |
Nagbabago ng minuto |
void setSeconds(int seconds) |
Nagbabago ng mga segundo |
5. Milliseconds
Gaya ng sinabi namin dati, Date
iniimbak ng object ang bilang ng mga millisecond na lumipas mula noong Enero 1, 1970.
Kung kailangan natin ang numerong iyon, makukuha natin ito mula sa Date
bagay:
long time = date.getTime();
Ibinabalik ng getTime()
pamamaraan ang bilang ng mga millisecond na nakaimbak sa loob ng Date
bagay.
Hindi mo lang makukuha ang bilang ng mga millisecond, ngunit maaari mo ring baguhin ang numerong iyon sa isang umiiral nang object:
Date date = new Date();
date.setTime(1117876500000L);
Sa pamamagitan ng paraan, maaari mong isulat ito nang mas maigsi sa pamamagitan ng pagpasa ng oras sa Date
bagay kapag ito ay nilikha:
Date date = new Date(1117876500000L);
6. Paghahambing ng mga petsa
Kung gusto mong paghambingin ang dalawang petsa at alamin kung alin ang nauna, mayroon kang tatlong pagpipilian
Ang unang paraan ay ihambing lamang ang bilang ng mga millisecond na iniimbak nila sa bawat isa:
if (date1.getTime() < date2.getTime())
Ang pangalawang paraan ay ang paggamit ng before()
paraan ng isang Date
bagay:
if (date1.before(date2))
Ganito ang mababasa: kung date1
nauna date2
, kung gayon...
Ang ikatlong paraan ay ang paggamit ng after()
paraan ng isang Date
bagay:
if (date2.after(date1))
Ganito ang mababasa: kung date2
pagkatapos ng date1
, kung gayon...
7. DateFormat
klase
Tandaan, noong ipinakita namin ang petsa sa screen, may nakita kaming ganito: Thu Feb 21 14:01:34 EET 2019
. Mukhang tama ang lahat, ngunit ang format ay mas kung paano ipapakita ang isang petsa para sa mga programmer kaysa sa mga normal na tao. Gusto naming ipakita ang petsa nang mas malinaw para sa mga user. Parang Tuesday, February 21
.
At walang taon. O may isang taon, kung kinakailangan. Sa pangkalahatan, gusto naming maipakita ang petsa sa iba't ibang paraan.
May espesyal na klase para dito: SimpleDateFormat
.
Halimbawa:
Code |
---|
|
Output ng console |
|
Tingnan kung ano ang ipinakita ng programa: Jun-04-2005
. Hindi na ganoon ang dati.
Ang pagkakaiba ay hindi namin ipinakita ang Date
mismong bagay, ngunit isang espesyal na string na nakuha sa pamamagitan ng pagtawag sa format()
pamamaraan sa isang SimpleDateFormat
bagay. Ngunit hindi iyon ang pangunahing punto dito.
SimpleDateFormat
Kapag nilikha ang bagay, ipinasa namin ang string "MMM-dd-YYYY"
bilang isang parameter. Ang string na ito ang naghahatid ng format ng petsa na sa huli ay nakita namin sa output ng console.
- Isinasaad ng MMM na ipakita ang pangalan ng buwan, pinaikli gamit ang tatlong titik
- dd ay nagpapahiwatig upang ipakita ang araw ng buwan
- Isinasaad ng YYYY na ipakita ang taon gamit ang apat na digit
Kung gusto nating i-output ang buwan bilang mga numero, sa halip na MMM
, kailangan nating isulat ang MM
, na magbubunga ng pattern "MM-dd-YYYY"
. Ang output ng screen ay magiging06-04-2005
Tatalakayin natin ang klase na ito nang mas detalyado mamaya.
8. Date.parse
paraan
Ang Date
klase ay maaaring gumawa ng ibang bagay na kawili-wili at kapaki-pakinabang - maaari itong makakuha ng isang petsa mula sa isang string. O, gaya ng sinasabi ng mga programmer, maaari itong mag-parse ng isang string.
Mayroon itong espesyal na parse()
pamamaraan para dito. Ganito ang hitsura ng pag-parse:
Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );
Sa pamamagitan ng paraan, ang code na ito ay maaaring maisulat nang mas compact:
Date date = new Date("Jul 06 12:15:00 2019");
Isasaalang-alang namin ang pag-parse ng mga string nang mas detalyado sa iba pang mga aralin.