1. Ngenalke Tanggal Wektu API

Pangripta Jawa ora seneng karo kahanan kelas Tanggal lan Tanggalan. Padha apik ing dina, nanging wektu ganti. Lan soko prasaja, kuat lan dipercaya dadi perlu. Lan kanthi rilis Java 8 (15 taun sawise Calendarmuncul), Java Date Time API dikenalake. Iki minangka kumpulan kelas sing kudu bisa ngrampungake saben tugas sing bisa ditindakake kanthi wektu.
Ana akeh kelas sing dipérang dadi sawetara paket:
Paket kasebut java.timeminangka paket dhasar kanggo Java Date Time API: ngemot kelas kayata LocalDate, LocalTime, LocalDateTime, Instant, Period, lan Duration. Kabeh obyek saka kelas kasebut yaiku immutable, sing tegese ora bisa diganti sawise digawe.
Paket java.time.formatngemot kelas kanggo format wektu, IE Ngonversi kaping (lan tanggal) kanggo strings lan kosok balene. Contone, ngemot DateTimeFormatterkelas serbaguna, sing ngganti SimpleDateFormatkelas kasebut.
Paket kasebut java.time.zonengemot kelas kanggo nggarap zona wektu. Isine kelas kayata TimeZonelan ZonedDateTime. Yen sampeyan nulis kode server kanggo klien sing ana ing macem-macem negara, sampeyan butuh kelas kasebut.
2. LocalDatekelas
Kelas pisanan lan paling migunani saka API Tanggal Wektu sing bakal kita deleng yaiku LocalDatekelas kasebut. Sing mbokmenawa bisa guess saka jenenge, kelas iki dirancang kanggo bisa karo tanggal.
Obyek kelas iki ora owah sawise digawe, yaiku LocalDatekelas ora bisa diganti. Nanging sifat iki nambah gamblang lan linuwih kanggo kelas. Utamane yen sawetara utas (utas eksekusi) sesambungan karo obyek kasebut ing wektu sing padha.
Kanggo nggawe LocalDateobyek anyar, sampeyan kudu nggunakake salah siji saka cara statis. Punika dhaptar sing utama.
Njupuk tanggal saiki
Kanggo entuk tanggal saiki, sampeyan kudu nggunakake now()metode statis. Iki luwih gampang tinimbang sing katon:
LocalDate today = LocalDate.now();
Where todaypunika LocalDatevariabel, lan LocalDate.now()telpon kanggo now()cara statis saka LocalDatekelas.
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
Njupuk tanggal ing zona wektu tartamtu
Kelas kasebut LocalDateuga duwe variasi metode now(ZoneId)sing ngidini sampeyan entuk tanggal saiki ing zona wektu tartamtu.
Kanggo nindakake iki, kita kudu kelas liyane - ZoneIdkelas (java.time.ZoneId). Nduwe of()cara sing ngasilake ZoneIdobyek sing diwenehi jeneng zona wektu.
Kanggo nemtokake tanggal saiki ing Shanghai, sampeyan kudu nulis kode ing ngisor iki:
| Kode | Output konsol |
|---|---|
|
|
Sampeyan bisa nemokake dhaptar jeneng kabeh zona wektu ing Internet.
3. Njupuk tanggal tartamtu
Kanggo entuk LocalDateobyek sing nuduhake tanggal tartamtu, sampeyan kudu nggunakake of()metode statis. Kabeh ing kene uga prasaja lan jelas:
LocalDate date = LocalDate.of(2019, Month.FEBRUARY, 22);
Where datepunika LocalDatevariabel, lan telpon kanggo cara statis saka kelas.LocalDate.of()of()LocalDate
Ing kene kita ndeleng FEBRUARYkonstanta kelas Month(java.time.Month) digunakake kanggo nemtokake Februari minangka sasi.
Sampeyan uga bisa nemtokake sasi kanthi cara lawas - nggunakake nomer:
LocalDate date = LocalDate.of(2019, 2, 22);
Kalih? Tinimbang Februari? Apa tegese sasi maneh dinomer saka siji?
Ya, meh 20 taun sawise nggawe Jawa, sasi pungkasane mandheg angka saka nol.
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
Entuk tanggal kanthi indeks dina
Ana cara liyane sing menarik kanggo nggawe tanggal: nggunakake ofYearDaymetode kasebut, sampeyan bisa entuk tanggal mung adhedhasar nomer taun lan indeks dina ing taun kasebut. Punika tampilan umum:
LocalDate date = LocalDate.ofYearDay(year, day);
Endi yearnomer taun lan dayindeks dina ing taun.
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
Tanggal 100 ing 2019 yaiku 10 April.
Entuk tanggal Unix
Apa sampeyan kelingan manawa Dateobyek tansah nyimpen wektu minangka jumlah milidetik wiwit 1 Januari 1970? Kanggo mesthekake programer ora bakal kantun dina lawas sing apik, LocalDatekelas entuk ofEpochDay()metode, sing ngasilake tanggal sing diwilang saka 1 Januari 1970. Punika tampilan umum:
LocalDate date = LocalDate.ofEpochDay(day);
Endi daycacahe dina sing wis lumaku wiwit tanggal 1 Januari 1970.
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
4. Njupuk unsur tanggal
Ora bisa ngganti LocalDateobyek, nanging sampeyan bisa entuk unsur individu saka tanggal sing disimpen. LocalDateobyek duwe sawetara cara kanggo iki:
| Metode | Katrangan |
|---|---|
|
Ngasilake taun tanggal tartamtu |
|
Ngasilake sasi tanggal: salah siji saka sawetara konstantaJANUARY, FEBRUARY, ...; |
|
Ngasilake indeks sasi tanggal. Januari == 1. |
|
Ngasilake indeks dina sasi |
|
Ngasilake indeks dina saka awal taun |
|
Ngasilake dina minggu: salah siji saka sawetara konstantaMONDAY, TUESDAY, ...; |
|
Ngasilake jaman: salah siji BCE(Sadurunge Era Saiki) lan CE(Era Saiki) |
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
5. Ngganti tanggal ing LocalDateobyek
Kelas kasebut LocalDatengemot sawetara cara sing ngidini sampeyan nggarap tanggal. Implementasi metode kasebut padha karo metode kelas String: ora ngganti LocalDateobyek sing ana, nanging ngasilake sing anyar kanthi data sing dikarepake.
Mangkene metode kelas LocalDate:
| Metode | Katrangan |
|---|---|
|
Nambah sawetara dina tartamtu kanggo tanggal |
|
Nambah minggu kanggo tanggal |
|
Nambah sasi kanggo tanggal |
|
Nambah taun kanggo tanggal |
|
Subtracts dina saka tanggal |
|
Ngurangi minggu saka tanggal |
|
Subtracts sasi saka tanggal |
|
Subtracts taun saka tanggal |
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
Cara birthday objectsing diarani ora owah. Nanging, cara kasebut ngasilake obyek anyar sing ngemot data sing dikarepake.
GO TO FULL VERSION