Dalam skrip saya, saya perlu melakukan serangkaian tindakan melalui rentang tanggal, mengingat tanggal mulai dan berakhir.
Tolong beri saya panduan untuk mencapai ini menggunakan Java.
for ( currentDate = starDate; currentDate < endDate; currentDate++) {
}
Saya tahu kode di atas tidak mungkin, tetapi saya melakukannya untuk menunjukkan kepada Anda apa yang ingin saya capai.
Jawaban:
Nah, Anda bisa melakukan sesuatu seperti ini menggunakan time-API Java 8 , untuk masalah ini secara khusus
java.time.LocalDate
(atau kelas Joda Time yang setara untuk Java 7 dan yang lebih lama)Saya benar - benar akan merekomendasikan menggunakan
java.time
(atau Joda Time) selama built-inDate
/Calendar
kelas.sumber
import
pernyataan Anda .JodaTime bagus, namun, demi kelengkapan dan / atau jika Anda lebih suka fasilitas yang disediakan API, berikut adalah pendekatan API standar.
Saat memulai dengan
java.util.Date
contoh seperti di bawah ini:Inilah
java.util.Calendar
pendekatan lama jika Anda belum berada di Java8:Dan inilah
java.time.LocalDate
pendekatan Java8 , pada dasarnya persis pendekatan JodaTime:Jika Anda ingin mengulangi termasuk tanggal akhir, gunakan masing
!start.after(end)
-!date.isAfter(end)
masing.sumber
Gaya Java 8 , menggunakan kelas java.time :
Keluaran:
Alternatif:
Java 9 menambahkan metode DateUntil () :
sumber
Ini pada dasarnya adalah jawaban yang sama yang BalusC berikan, tetapi sedikit lebih mudah dibaca dengan loop sementara sebagai ganti loop
sumber
Apache Commons
sumber
addDays(..)
dan itu semakin pendek.sumber
sumber
Kita dapat melakukan migrasi logika ke berbagai metode untuk Java 7, Java 8 dan Java 9 :
Kemudian kita dapat memanggil metode ini sebagai:
Outputnya adalah:
sumber
Date
danCalendar
digantikan oleh kelas java.time tahun yang lalu. Secara khusus, diganti olehInstant
danZonedDateDate
.Berikut ini adalah kode Java 8. Saya pikir kode ini akan menyelesaikan masalah Anda. Selamat Coding
sumber
Mengapa tidak menggunakan zaman dan loop dengan mudah.
sumber
Anda dapat menulis kelas seperti itu (mengimplementasikan antarmuka iterator) dan beralih di atasnya.
dan gunakan seperti:
sumber
Anda dapat mencoba ini:
sumber
Ini akan membantu Anda memulai 30 hari secara berulang-ulang hingga tanggal hari ini. Anda dapat dengan mudah mengubah rentang tanggal dan arah.
sumber