Saya memiliki LocalDate yang perlu mendapatkan hari pertama dan terakhir setiap bulan. Bagaimana aku melakukan itu?
misalnya. 13/2/2014
Saya perlu mendapatkan 1/2/2014
dan 28/2/2014
dalam format LocalDate .
Menggunakan tiga kelas LocalDate.
Cukup gunakan withDayOfMonth
, dan lengthOfMonth()
:
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
API dirancang untuk mendukung solusi yang sesuai dengan kebutuhan bisnis
Namun, solusi Jon juga bagus.
sumber
YearMonth
Untuk kelengkapan, dan lebih elegan menurut saya, lihat penggunaan
YearMonth
class ini.Untuk hari pertama & terakhir bulan ini, ini menjadi:
sumber
LocalDate
with
metode?LocalDate
instance untuk memulai.Jawaban Jon Skeets benar dan pantas mendapat suara positif saya, hanya menambahkan solusi yang sedikit berbeda ini untuk kelengkapan:
sumber
Jika ada yang datang mencari hari pertama bulan sebelumnya dan hari terakhir bulan sebelumnya :
sumber
sumber
Anda dapat mencoba ini untuk menghindari menunjukkan tanggal kustom dan jika perlu menampilkan tanggal mulai dan akhir bulan ini:
Hasil:
sumber
Coba ini:
Anda dapat menemukan keluaran yang diinginkan tetapi perlu menjaga parameter true / false untuk metode getLastDayOfMonth
parameter itu menunjukkan tahun kabisat
sumber
getLastDayOfMonth
- lihat jawaban saya untuk pendekatan yang lebih sederhana.jika Anda ingin melakukannya hanya dengan kelas LocalDate:
sumber
Hanya di sini untuk menunjukkan implementasi saya untuk solusi @herman
sumber
LocalDateTime
adalah kelas yang salah untuk digunakan di sini. Anda membuang informasi zona / offset yang berharga.Date
tidak ada hubungannya dengan Pertanyaan tersebut, dan umumnya harus dihindari.ZoneId.of("America/La_Paz")
. Untuk tanggal hari ini akan memberikan hasil yang sama, tetapi mungkin tidak untuk tanggal bersejarah atau tanggal di masa mendatang.