1. Datekelas lan wektu Unix

Wiwit wiwitaning basa Jawa wis ana kelas khusus kanggo nggarap wektu lan tanggal — Date. Sajrone wektu, sawetara kelas liyane kanggo nggarap tanggal muncul, nanging programer terus nggunakake Datekelas kasebut nganti saiki.

Iki amarga banget prasaja lan trep. Lan minangka programmer, sampeyan mesthi bakal nemoni ing proyek apa wae. Apa nggunakake utawa ora iku pilihan sampeyan, nanging sampeyan kudu ngerti. Dadi wenehi sawetara menit wektu sing larang regane.

Apa sing ndadekake Datekelas dadi apik? Sawijining gamblang.

Kelas Datenyimpen informasi tanggal lan wektu minangka jumlah milidetik sing wis liwati wiwit 1 Januari 1970. Iku akeh milidetik, mula longjinis kasebut digunakake kanggo nyimpen.

menarik.

Kenapa wiwit 1970 khusus? Iki sing disebut wektu Unix : iku carane sistem operasi Unix, kang mbah saka kabeh sistem operasi modern, tansah wektu.

Nanging sampeyan bisa kanthi gampang ngerteni sepira suwene wektu ing antarane rong tanggal: mung nyuda tanggal siji saka tanggal liyane, lan sampeyan entuk bedane wektu antarane tanggal nganti milidetik sing paling cedhak.

Ing ngisor iki sawetara conto sing migunani babagan nggarap kelas Date.


2. Njupuk tanggal saiki

Kanggo entuk wektu lan tanggal saiki, mung nggawe Dateobyek. Saben obyek anyar nyimpen wektu nalika digawe. Iku katon banget prasaja:

Date current = new Date();

Sawise nglakokake prentah iki, currentvariabel bakal nyimpen referensi kanggo Dateobyek sing digawe, sing bakal nyimpen wektu nggawe - jumlah milidetik sing wis suwe wiwit 1 Januari 1970.

Nampilake tanggal saiki ing layar

Kanggo nampilake tanggal saiki, cukup: a) nggawe Dateobyek anyar, b) nyetak menyang layar nggunakake System.out.println()metode kasebut.

Tuladha:

Kode Output konsol
Date current = new Date();
System.out.println(current);
Thu Feb 21 14:01:34 EET 2019

Mangkene tegese output konsol:

Teks Interpretasi
Kemis _ Kemis
21 februari 21 Februari
14:01:34 jam : menit : detik
EET Zona wektu: Wektu Eropah Wétan
2019 taun

3. Nyetel tanggal tartamtu

Kita ngerti carane entuk wektu saiki, nanging kepiye carane nggawe Dateobyek sing nyimpen tanggal utawa wektu sing beda?

Maneh, kabeh prasaja ing kene. Kanggo nyetel tanggal tartamtu, sampeyan kudu nulis kode kaya iki:

Date birthday = new Date(year, month, day);

Kabeh iku prasaja lan jelas, nanging ana rong nuansa sing kudu dingerteni:

  1. Taun kudu diitung saka 1900.
  2. Wulan cacahe saka nol.
menarik.

Iki minangka warisan liyane saka sistem operasi Unix: ing Unix, programer nyatakake taun nggunakake rong digit. Tinimbang 1977, dheweke mung nulis 77. Dadi 77 minangka taun sing bener yen diitung saka 1900.

Contone, aku lair tanggal 21 Maret 1989. Maret iku sasi katelu, mula aku kudu nulis:

Kode Output konsol
Date current = new Date(89, 2, 21);
System.out.println(current);
Tue Mar 21 00:00:00 EET 1989

Wulan diwilang saka nol, nanging dina ora. Iku rada aneh, ta?

Kita mikir programer sing sejatine kudu menang lan ngetung dina sasi saka nol uga. Oh, iki conformists 🙂

Nyetel wektu tartamtu

Nyetel wektu tartamtu uga cukup prasaja: kanggo iki, sampeyan kudu nulis statement kaya iki:

Date birthday = new Date(year, month, day, hour, minutes, seconds);

Jam, menit lan detik diitung saka nol: supaya programmer ing njero sampeyan ambegan lega.

Tuladha:

Kode Output konsol
Date current = new Date(105, 5, 4, 12, 15, 0);
System.out.println(current);
Sat Jun 04 12:15:00 EEST 2005

Kita nyetel wektu 12:15 lan tanggal 4 Juni 2005 . Iki sethitik angel kanggo non-programmer diwaca, nanging kerjane minangka ngirim.


4. Nggarap unsur tanggal

Sampeyan bisa nindakake luwih akeh karo Dateobyek tinimbang mung nampilake. Nduwe cara sing ngidini sampeyan entuk unsur individu tanggal sing disimpen sacara internal:

Metode Katrangan
int getYear()
Ngasilake taun tanggal relatif kanggo 1900.
int getMonth()
Ngasilake sasi tanggal (wulan dinomer saka nol)
int getDate()
Ngasilake dina sasi
int getDay()
Ngasilake dina minggu
int getHours()
Ngasilake jam
int getMinutes()
Ngasilake menit
int getSeconds()
Ngasilake detik

Tuladha:

Kode Output konsol Cathetan
Date current = new Date(105, 5, 4, 12, 15, 0);
System.out.println(current.getYear());
System.out.println(current.getMonth());
System.out.println(current.getDate());
System.out.println(current.getDay());

105
5
4
6

2005
Juni
dina sasi
Sabtu

Miturut cara, Dateobyek ora mung ngidini sampeyan entuk unsur tanggal, nanging uga ngganti:

Metode Katrangan
void setYear(int year) Ganti taun tanggal. Taun kasebut dituduhake relatif marang 1900.
void setMonth(int month) Ngganti sasi tanggal (wulan dinomer saka nol)
void setDate(int date) Ganti dina sasi
void setHours(int hours) Ganti jam
void setMinutes(int minutes) Ganti menit
void setSeconds(int seconds) Ganti detik

5. Milidetik

Kaya sing wis dakkandhakake sadurunge, Dateobyek kasebut nyimpen jumlah milidetik sing wis suwe wiwit 1 Januari 1970.

Yen kita butuh nomer kasebut, kita bisa entuk saka Dateobyek kasebut:

long time = date.getTime();

Cara kasebut getTime()ngasilake jumlah milidetik sing disimpen ing Dateobyek kasebut.

Ora mung sampeyan bisa entuk nomer milidetik, nanging sampeyan uga bisa ngganti nomer kasebut ing obyek sing wis ana:

Date date = new Date();
date.setTime(1117876500000L);

Ngomong-ngomong, sampeyan bisa nulis iki kanthi luwih ringkes kanthi ngliwati wektu menyang Dateobyek nalika digawe:

Date date = new Date(1117876500000L);

6. Mbandhingake tanggal

Yen sampeyan pengin mbandhingaké rong tanggal lan mangerteni kang siji teka pisanan, sampeyan duwe telung opsi

Cara pisanan yaiku mbandhingake jumlah milidetik sing saben disimpen:

if (date1.getTime() < date2.getTime())

Cara kapindho yaiku nggunakake before()metode obyek Date:

if (date1.before(date2))

Wacan kaya mangkene: yen date1sadurunge date2, banjur ...

Cara katelu yaiku nggunakake after()metode obyek Date:

if (date2.after(date1))

Wacan kaya mangkene: yen date2sawise date1, banjur ...


7. DateFormatkelas

Elinga, nalika kita nampilake tanggal ing layar, kita weruh kaya iki: Thu Feb 21 14:01:34 EET 2019. Kabeh katon bener, nanging format kasebut luwih akeh babagan tanggal sing bakal ditampilake kanggo programer tinimbang manungsa normal. Kita pengin nampilake tanggal luwih cetha kanggo pangguna. Soko kaya Tuesday, February 21.

Lan tanpa taun. Utawa karo taun, yen perlu. Umumé, kita pengin bisa nampilake tanggal kanthi cara sing beda-beda.

Ana kelas khusus kanggo iki: SimpleDateFormat.

Tuladha:

Kode
Date current = new Date(105, 5, 4, 12, 15, 0);
SimpleDateFormat formatter = new SimpleDateFormat("MMM-dd-YYYY");
String message = formatter.format(current);
System.out.println(message);
Output konsol
Jun-04-2005

Deleng apa program ditampilake: Jun-04-2005. Babar pisan ora kaya biyen.

Bentenipun punika kita ditampilake ora Dateobyek dhewe, nanging senar khusus dijupuk dening nelpon format()cara ing SimpleDateFormatobyek. Nanging iki dudu titik utama ing kene.

Nalika SimpleDateFormatobyek digawe, kita liwati ing senar "MMM-dd-YYYY"minangka parameter. Senar iki sing ngirim format tanggal sing pungkasane katon ing output konsol.

  • MMM nuduhake kanggo nampilake jeneng sasi, dicekak nggunakake telung aksara
  • dd nuduhake kanggo nampilake dina sasi
  • YYYY nuduhake taun nggunakake papat digit

Yen kita arep kanggo output sasi minangka nomer, banjur tinimbang MMM, kita kudu nulis MM, kang ngasilaken pola "MM-dd-YYYY". Output layar bakal06-04-2005

Kita bakal ngrembug kelas iki kanthi luwih rinci mengko.


8. Date.parsecara

Kelas Datebisa nindakake liyane menarik lan migunani - iku bisa njaluk tanggal saka senar. Utawa, minangka programer ngomong, bisa ngurai senar.

Wis parse()cara khusus kanggo iki. Parsing katon kaya iki:

Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );

Miturut cara, kode iki bisa ditulis luwih kompak:

Date date = new Date("Jul 06 12:15:00 2019");

Kita bakal nimbang parsing senar kanthi luwih rinci ing pelajaran liyane.