1. ZonedDateTime
kelas
Ana kelas liyane sing menarik banget ing API Tanggal Wektu: kelas ZonedDateTime
. Tujuane utamane yaiku supaya gampang nggarap tanggal ing zona wektu sing beda-beda.
LocalDate
apik kanggo makili tanggal. Contone, ulang tahun. Ulang tahunku tanggal 15 Maret ora ana ngendi wae. Iki minangka conto tanggal.
LocalTime
apik kanggo njlèntrèhaké wektu, kaya wektu nyetel ing jam weker: Aku nyetel weker kanggo 5:00 lan ora Matter ngendi aku. 5:00 punika 5:00 am. Iki minangka conto nggarap wektu.
Saiki ayo ngomong yen kita lagi nulis aplikasi sing buku penerbangan. Pesawat take off lan teka adhedhasar wektu lokal. Pesawat kasebut ana ing udhara sajrone wektu sing tetep, nanging zona wektu bisa diganti.
Zona wektu
Miturut cara, zona wektu iku kekacoan nyata. Lan yen sampeyan mikir yen ana 24 zona wektu, sampeyan salah banget.
Contone, wektu ing India beda karo Greenwich Mean Time kanthi limang jam setengah: GMT+5:30
. Sawetara negara ngalih menyang wayah awan, lan liyane ora. Apa maneh, negara sing beda-beda pindhah menyang musim panas ing wektu sing beda-beda ing taun.
Lan sawetara negara nggawe undang-undang sing mbatalake wektu awan, utawa ngenalake maneh, utawa mbatalake maneh.
Ing kasus apa wae, jagad duwe zona wektu, lan ing saben zona wektu ana siji wektu. Wektu ing zona sing beda-beda bisa uga pas sajrone periode taun tartamtu, lan banjur beda sajrone periode liyane. Zona wektu biasane dijenengi miturut kutha-kutha utama sing dumunung ing: Europe/Monaco
, Asia/Singapore
, nanging uga ana pangecualian - US/Pacific
.
Sacara resmi, ana 599 zona wektu saiki. Coba pikirake: 599. Sing adoh saka 24. Sugeng rawuh ing jagad global.
Kelas ZoneId
saka java.time
paket digunakake kanggo nyimpen zona wektu ing Jawa.
Miturut cara, iki nduweni getAvailableZoneIds()
cara statis, sing ngasilake set kabeh zona wektu sing saiki dikenal. Kanggo entuk dhaptar kabeh zona, sampeyan kudu nulis kode ing ngisor iki:
Kode | Output konsol (sebagian) |
---|---|
|
|
Kanggo entuk ZoneId
obyek kanthi jeneng, sampeyan kudu nggunakake of()
metode statis;
Kode | Cathetan |
---|---|
|
|
2. Nggawe ZonedDateTime
obyek
Nalika nggawe ZonedDateTime
obyek, sampeyan kudu nelpon cara statis kelas now()
lan pass ZoneId
obyek menyang.
Kode | Output konsol |
---|---|
|
|
Yen sampeyan ora ngirim ZoneId
obyek menyang now()
cara (lan sing diijini), banjur zona wektu ditemtokake kanthi otomatis adhedhasar setelan komputer sing mbukak program kasebut.
Tuladha:
Kode | Output konsol |
---|---|
|
|
Ngonversi tanggal global menyang tanggal lokal
Salah sawijining fitur menarik ZonedDateTime
yaiku kemampuan kanggo ngowahi menyang tanggal lan wektu lokal. Tuladha:
ZoneId zone = ZoneId.of("Africa/Cairo");
ZonedDateTime cairoTime = ZonedDateTime.now(zone);
LocalDate localDate = cairoTime.toLocalDate();
LocalTime localTime = cairoTime.toLocalTime();
LocalDateTime localDateTime = cairoTime.toLocalDateTime();
3. Nggarap wektu
Kaya LocalDateTime
kelas, ZonedDateTime
kelas duwe akeh cara kanggo entuk unsur individu tanggal lan wektu. Mangkene dhaptar metode kasebut:
|
Ngasilake taun tanggal tartamtu |
|
Ngasilake sasi tanggal: salah siji saka sawetara konstanta -JANUARY, FEBRUARY, ...; |
|
Ngasilake indeks sasi tanggal. Januari == 1 |
|
Ngasilake indeks dina sasi |
|
Ngasilake dina minggu: salah siji saka sawetara konstanta -MONDAY, TUESDAY, ...; |
|
Ngasilake indeks dina taun |
|
Ngasilake jam |
|
Ngasilake menit |
|
Ngasilake detik |
|
Ngasilake nanodetik |
Kabeh cara padha sampurna karo metode kelas LocalDateTime
. Lan, mesthi, ZonedDateTime
kelas kasebut duwe metode sing ngidini sampeyan nggarap tanggal lan wektu. Sing jarene, obyek sing diarani metode kasebut ora owah. Nanging, dheweke ngasilake obyek anyar ZonedDateTime
:
Metode | Katrangan |
---|---|
|
Nambah taun kanggo tanggal |
|
Nambah sasi kanggo tanggal |
|
Nambah dina kanggo tanggal |
|
Tambah jam |
|
Nambah menit |
|
Nambah detik |
|
Nambahake nanodetik |
|
Subtracts taun saka tanggal |
|
Subtracts sasi saka tanggal |
|
Subtracts dina saka tanggal |
|
Ngurangi jam |
|
Ngurangi menit |
|
Ngurangi detik |
|
Ngurangi nanodetik |
Kita ora bakal menehi conto apa wae, amarga kita mikir kabeh ing kene wis jelas kanthi analogi karo kelas sing lagi wae dianggep.