1. ZonedDateTimekelas
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.
LocalDateapik kanggo makili tanggal. Contone, ulang tahun. Ulang tahunku tanggal 15 Maret ora ana ngendi wae. Iki minangka conto tanggal.
LocalTimeapik 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 ZoneIdsaka java.timepaket 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 ZoneIdobyek kanthi jeneng, sampeyan kudu nggunakake of()metode statis;
| Kode | Cathetan |
|---|---|
|
|
2. Nggawe ZonedDateTimeobyek
Nalika nggawe ZonedDateTimeobyek, sampeyan kudu nelpon cara statis kelas now()lan pass ZoneIdobyek menyang.
| Kode | Output konsol |
|---|---|
|
|
Yen sampeyan ora ngirim ZoneIdobyek 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 ZonedDateTimeyaiku 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 LocalDateTimekelas, ZonedDateTimekelas 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, ZonedDateTimekelas 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.
GO TO FULL VERSION