Cara Memulai dan Mengakhiri Hari menggunakan Java

1. Ikhtisar

Dalam tutorial singkat ini, kita akan belajar bagaimana memulai dan mengakhiri hari di Java , menggunakan contoh sederhana dan lugas untuk skenario yang berbeda.

Kami akan menggunakan 8 Tanggal / Waktu API Java untuk membuat contoh ini.

Jika Anda ingin membaca sedikit lebih banyak tentang perpustakaan Tanggal dan Waktu 8 Java sebelum melanjutkan, Anda dapat memulai di sini.

2. Dari Objek LocalDate

Pertama-tama, mari kita lihat bagaimana kita bisa mendapatkan awal atau akhir hari yang diberikan kepada kita sebagai objek LocalDate , seperti:

LocalDate localDate = LocalDate.parse("2018-06-23");

2.1. atStartOfDay ()

Cara termudah untuk mendapatkan LocalDateTime yang mewakili awal hari tertentu adalah dengan menggunakan metode atStartOfDay () :

LocalDateTime startOfDay = localDate.atStartOfDay();

Metode ini kelebihan beban, jadi jika kita ingin mendapatkan ZonedDateTime darinya, kita dapat melakukannya dengan menentukan ZoneId :

ZonedDateTime startOfDay = localDate.atStartOfDay(ZoneId.of("Europe/Paris"));

2.2. dari()

Cara lain di mana kita dapat mencapai hasil yang sama adalah dengan menggunakan metode of () , menyediakan LocalDate dan salah satu bidang statis LocalTime :

LocalDateTime startOfDay = LocalDateTime.of(localDate, LocalTime.MIDNIGHT);

LocalTime menawarkan bidang statis berikut: MIDNIGHT (00:00), MIN (00:00), NOON (12:00), dan MAX (23: 59: 59.999999999).

Oleh karena itu, jika kita ingin mendapatkan penghujung hari, kita akan menggunakan nilai MAX .

Mari kita coba, tetapi dengan metode yang berbeda.

2.3. pada waktu()

Metode ini kelebihan beban, memungkinkan kami untuk menentukan waktu yang diinginkan menggunakan jam, menit, detik atau bahkan nanodetik.

Dalam hal ini, bagaimanapun, kita akan menggunakan localtime 's MAX lapangan sebagai argumen untuk mendapatkan saat-saat terakhir dari hari yang diberikan:

LocalDateTime startOfDay = localDate.atTime(LocalTime.MAX);

2.4. atDate ()

Contoh ini sangat mirip dengan yang sebelumnya, tetapi kali ini, kita akan menggunakan metode atDate () dari objek LocalTime , meneruskan LocalDate sebagai argumen:

LocalDateTime endOfDate = LocalTime.MAX.atDate(localDate);

3. Dari Objek LocalDateTime

Hampir tidak perlu dikatakan lagi bahwa kita bisa mendapatkan LocalDate darinya, dan kemudian menggunakan salah satu metode di bagian 2 untuk mengakhiri atau memulai hari darinya:

LocalDateTime localDateTime = LocalDateTime .parse("2018-06-23T05:55:55"); LocalDateTime endOfDate = localDateTime .toLocalDate().atTime(LocalTime.MAX);

Tetapi di bagian ini, kita akan menganalisis satu metode lain untuk mendapatkan objek dengan bagian waktunya diatur ke awal atau akhir hari, langsung dari objek LocalDateTime lain yang diberikan .

3.1. dengan()

Semua kelas yang menerapkan antarmuka Temporal dapat menggunakan metode ini .

Dalam kasus ini, kita akan menggunakan tanda tangan dari metode yang mengambil TemporalField (terutama, salah satu nilai ChronoField Enum ) dan argumen panjang sebagai nilai baru bidang:

LocalDateTime endOfDate = localDateTime.with(ChronoField.NANO_OF_DAY, LocalTime.MAX.toNanoOfDay());

4. Dari Objek ZonedDateTime

Jika kita diberi ZonedDateTime, kita dapat menggunakan metode with () karena ini mengimplementasikan antarmuka Temporal juga:

ZonedDateTime startofDay = zonedDateTime.with(ChronoField.HOUR_OF_DAY, 0);

5. Kesimpulan

Singkatnya, kami telah menganalisis banyak cara berbeda untuk memulai dan mengakhiri hari di Java untuk berbagai skenario kasus.

Akhirnya, kita telah belajar tentang wawasan dari 8 kelas perpustakaan Tanggal dan Waktu Java dan menjadi akrab dengan banyak kelas dan antarmuka.

Seperti biasa, semua contoh dapat diakses di repositori GitHub kami.