1. Paglipat mula sa Date
klase patungo sa Calendar
klase
Gustung-gusto ng mga programmer ang Date
klase para sa pagiging simple at suporta nito para sa mga pamantayan ng Unix, ngunit tulad ng alam mo, bawat rosas ay may mga tinik nito.
Gusto ng mga programmer ng "matalinong" Date
klase. At nakuha nila ang gusto nila sa anyo ng Calendar
klase. Ito ay ipinaglihi bilang isang paraan upang hindi lamang mag-imbak ng mga petsa, kundi pati na rin upang magsagawa ng mahihirap na operasyon na may mga petsa.
Ang buong pangalan ng Calendar
klase ay java.util.Calendar. Huwag kalimutang idagdag ito sa isang import statement kung magpasya kang gamitin ito sa iyong code.
Maaari kang lumikha ng isang Calendar
bagay gamit ang command na ito:
Calendar date = Calendar.getInstance();
Ang static getInstance()
na paraan ng Calendar
klase ay lumilikha ng isang Calendar
bagay na sinimulan sa kasalukuyang petsa. Ang kalendaryong gusto mo ay malilikha batay sa mga setting ng computer na nagpapatakbo ng program.
O mas tumpak, ang kalendaryong makukuha mo... Iyon ay dahil ang mga tao sa Earth ay hindi limitado sa isang kalendaryo. Sa halip, marami silang ginagamit. At halos bawat isa sa kanila ay nauugnay sa ilang relihiyon o bansa. Sinusuportahan ng Calendar
klase ang 3 sa kanila:
Kalendaryo | Paglalarawan |
---|---|
GregorianCalendar | Kristiyanong Gregorian na kalendaryo |
BuddhistCalendar | kalendaryong Buddhist |
JapaneseImperialCalendar | Kalendaryong imperyal ng Hapon |
Ngunit mayroon ding Chinese at Arabic na kalendaryo. Karaniwan, ang pagtatrabaho sa oras ay hindi kasingdali ng tila.
Sa kalendaryong Tsino, ang taon ay opisyal na 4716 sa panahon ng pagsulat ng araling ito. At ayon sa kalendaryong Muslim, ang taon ay 1398. Maligayang pagdating sa malaking mundo, kaibigan kong programmer.
2. Paglikha ng isang bagay sa kalendaryo
Gagamitin natin ang kalendaryong Gregorian, dahil ito ang pinakakaraniwan sa mundo. Hindi bababa sa hanggang sa bumili ng Oracle ang China at gawing pangunahing kalendaryo ang Chinese.
Maaari kang lumikha ng isang bagay sa kalendaryo na may anumang petsa gamit ang isang pahayag na tulad nito:
Calendar date = new GregorianCalendar(year, month, day);
Oo, kailangan mong magsulat GregorianCalendar
sa bawat oras. Sa halip na Calendar
, maaari ka ring sumulat GregorianCalendar
— gagana rin iyon. Ngunit ang pagsusulat lamang Calendar
ay mas maikli.
Ang taon ay dapat isulat nang buo, hal. hindi ka maaaring sumulat ng 19 sa halip na 2019. Ang mga buwan ay binibilang pa rin mula sa zero. Ngunit tulad ng dati, ang mga araw ng buwan ay hindi binibilang mula sa zero. Mga nerd!
Upang itakda ang oras pati na rin ang petsa, kailangan mong ipasa ang oras bilang mga karagdagang argumento:
... = new GregorianCalendar(year, month, day, hours, minutes, seconds);
Maaari ka ring pumasa sa mga millisecond kung kinakailangan. Sila ang parameter pagkatapos ng bilang ng mga segundo.
3. Pagpapakita ng bagay sa kalendaryo sa screen
Kung magpi-print ka lang ng bagay sa kalendaryo sa screen, hindi ka masyadong masisiyahan sa resulta.
Code |
---|
|
Output ng console |
|
Ang bagay na dapat tandaan dito ay ang isang kalendaryo ay isang kalendaryo, hindi isang petsa : mayroon itong lahat ng uri ng mga setting na lahat ay ipapakita sa screen.
Tamang gumamit ng isang SimpleDateFormat
bagay upang magpakita ng kalendaryo, ngunit hanggang sa pag-aaralan natin ito, maaari mong gamitin ang life hack na ito.
Date date = calendar.getTime();
Ang isang Calendar
bagay ay madaling ma-convert sa isang Date
bagay, at alam mo na kung paano magpakita ng isang Date
bagay. Maaari mong gamitin ang code na tulad nito upang i-convert ang isang Calendar
bagay sa isang Date
:
Gamit ang getTime()
pamamaraan:
Code | Output ng console |
---|---|
|
|
Ibang usapan iyon, di ba?
4. Paggawa gamit ang mga elemento ng isang petsa
Upang makakuha ng partikular na elemento ng isang petsa (hal. taon, buwan, ...), ang Calendar
klase ay may get()
pamamaraan. Ito ay isang solong pamamaraan, ngunit mayroon itong mga parameter:
int month = calendar.get(Calendar.MONTH);
Kung saan calendar
ang isang Calendar
variable, at MONTH
ito ay isang pare-parehong larangan ng Calendar
klase.
Ipapasa mo ang isa sa mga Calendar
pare-parehong field ng klase bilang argumento sa get
pamamaraan, at makukuha mo ang nais na halaga bilang resulta.
Mga halimbawa
Code | Paglalarawan |
---|---|
|
panahon (bago o pagkatapos ng karaniwang panahon) taon buwan araw ng buwan araw ng linggo oras minuto segundo |
Upang baguhin ang isang elemento ng isang petsa, gamitin ang set
pamamaraan:
calendar.set(Calendar.MONTH, value);
Kung saan calendar
ang isang Calendar
variable, at MONTH
ito ay isang pare-parehong larangan ng Calendar
klase.
Kapag nagtatrabaho sa set
pamamaraan, ipinapasa mo ang isa sa Calendar
mga pare-parehong field ng klase bilang unang argumento, at ang bagong halaga bilang pangalawang argumento.
Mga halimbawa
Code | Paglalarawan |
---|---|
|
taon = 2019 buwan = Hulyo (numero mula 0) ika-4 na araw oras minuto segundo |
5. Constants ng Calendar
klase
Ang mga permanenteng field ng Calendar
klase ay hindi limitado sa mga para sa pagbibigay ng pangalan sa mga elemento ng isang petsa. Tila may mga patlang para sa bawat okasyon.
Calendar date = new GregorianCalendar(2019, Calendar.JANUARY, 31);
Halimbawa, may mga pare-parehong field na tumutukoy sa mga buwan:
At gayundin ang mga araw ng linggo:
Calendar calendar = new GregorianCalendar(2019, Calendar.JANUARY, 31);
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY)
{
System.out.println("It's Friday");
}
Hindi namin ililista ang lahat. Ayaw lang namin na mabigla ka kung makakita ka ng mga pare-parehong tulad nito sa code.
Ang paggamit ng mga constant ay ginagawang mas nababasa ang code, kaya naman ginagamit ito ng mga programmer. At ang mga buwan ay binibilang mula sa zero din upang mapabuti ang pagiging madaling mabasa. O hindi.
6. Pagbabago ng petsa sa isang Calendar
bagay
Ang Calendar
klase ay may paraan na nagbibigay-daan sa iyong magpatakbo sa isang petsa sa mas matalinong paraan. Halimbawa, maaari kang magdagdag ng isang taon, isang buwan, o ilang araw sa isang petsa. O ilayo sila. Ang pamamaraang ito ay tinatawag na add()
. Ang paggawa nito ay ganito ang hitsura:
calendar.add(Calendar.MONTH, value);
Kung saan calendar
ang isang Calendar
variable, at MONTH
ito ay isang pare-parehong larangan ng Calendar
klase.
Kapag nagtatrabaho sa add
pamamaraan, ipinapasa mo ang isa sa Calendar
mga pare-parehong field ng klase bilang unang argumento, at bilang pangalawang argumento — ang bagong halaga na idaragdag.
Ito ay isa pang matalinong pamamaraan. Tingnan natin kung gaano ito katalino:
Code |
---|
|
Output ng console |
|
Nauunawaan ng paraang ito na mayroon lamang 28 araw sa Pebrero 2019, kaya ang resultang petsa ay Marso 1.
Ngayon mag-alis tayo ng 2 buwan! Ano ang dapat nating makuha? Disyembre 27, 2018! Suriin natin ngayon.
Upang magsagawa ng operasyon na nagreresulta sa mas maagang petsa, kailangan mong magpasa ng negatibong halaga sa add()
pamamaraan:
Code |
---|
|
Output ng console |
|
Gumagana siya!
Isinasaalang-alang ng pamamaraang ito ang magkakaibang haba ng mga buwan pati na rin ang mga leap year. Sa kabuuan, isang mahusay na pamamaraan. Ito ang eksaktong kailangan ng karamihan sa mga programmer na nagtatrabaho sa mga petsa.
7. Rolling elements ng isang petsa
Ngunit minsan may mga sitwasyon na hindi natin gusto ang matalinong pag-uugali na ito, hal. gusto mong gumawa ng isang bagay sa isang bahagi ng petsa nang hindi binabago ang lahat ng iba pa.
Ang Calendar
klase ay may espesyal roll()
na pamamaraan para dito. Ang lagda nito ay katulad ng add()
pamamaraan, ngunit ang pamamaraang ito ay nagbabago lamang ng isang elemento ng petsa, na iniiwan ang natitira na hindi nagbabago.
Halimbawa:
Code |
---|
|
Output ng console |
|
Binago namin ang buwan, ngunit ang taon at petsa ay nanatiling hindi nagbabago.