Lebih
Bagaimana untuk membandingkan tanggal di Java?
Bagaimana cara membandingkan tanggal pada antara di pulau Jawa?
Contoh:
date1 adalah 22-02-2010
date2 adalah 07-04-2010
hari ini
date3 adalah 25-12-2010
date3
selalu lebih besar dari date1
dan date2
selalu hari ini. Bagaimana cara memverifikasi jika hari ini's upload di antara date1 dan tanggal 3?
367
11
[Tanggal][1] memiliki [sebelum][2] dan [setelah][3] metode dan dapat dibandingkan satu sama lain][4] sebagai berikut:
Untuk yang inklusif perbandingan:
Gunakan compareTo:
date1.compareTo(date2);
Berikut ini adalah cara paling umum dari membandingkan tanggal. Tapi saya lebih suka yang pertama
Pendekatan-1 : Menggunakan Tanggal.sebelum(), Date.setelah() dan Tanggal.sama dengan()
Pendekatan-2 : Upload.compareTo()
tl;dr
Atau, lebih baik, jika anda menambahkan ThreeTen-Tambahan perpustakaan untuk proyek anda.
Setengah terbuka pendekatan, di mana awal inklusif sementara ending exclusive.
Bad Pilihan Format
By the way, itu adalah pilihan yang buruk dari format teks representasi dari tanggal atau tanggal-nilai waktu. Bila mungkin, tetap dengan standar ISO 8601 format. ISO 8601 format yang jelas, dapat dimengerti seluruh budaya manusia, dan mudah untuk mengurai oleh mesin. Untuk tanggal-satunya nilai, standar format YYYY-MM-DD. Perhatikan cara format ini memiliki keuntungan yang kronologis ketika diurutkan berdasarkan abjad.
LocalDate
The
LocalDate
kelas merupakan tanggal-satunya nilai tanpa waktu-dari-hari dan tanpa zona waktu. Zona waktu adalah penting dalam menentukan tanggal. Untuk saat tertentu, tanggal bervariasi di seluruh dunia dengan zona. Misalnya, beberapa menit setelah tengah malam di Paris adalah hari baru sementara masih "kemarin" di Montréal Québec.DateTimeFormatter
Sebagai input string format non-standar, kita harus menentukan format pola untuk mencocokkan.
Gunakan itu untuk mengurai input string.
Di saat-saat bekerja, biasanya terbaik untuk menentukan rentang waktu Setengah Terbuka pendekatan mana awal inklusif sedangkan ending exclusive. Jadi kami ingin tahu jika hari ini adalah hari yang sama atau paling lambat awal dan juga sebelum berhenti. A briefer cara untuk mengatakan "sama atau lebih dari awal" adalah "tidak sebelum memulai".
Lihat Jawaban oleh gstackoverflow menampilkan daftar perbandingan metode yang dapat anda hubungi.
Tentang jawa.waktu
The jawa.waktu kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan merepotkan tua legacy tanggal waktu kelas seperti
jawa.util.Tanggal
,Kalender
, &SimpleDateFormat
. The Joda-Waktu proyek, sekarang di maintenance mode, menyarankan migrasi ke jawa.waktu kelas. Untuk mempelajari lebih lanjut, lihat Oracle Tutorial. Dan pencarian Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasi JSR 310. Di mana untuk memperoleh jawa.waktu kelas?See Cara menggunakan ThreeTenABP.... The ThreeTen-Extra proyek meluas jawa.waktu dengan kelas tambahan. Proyek ini adalah ajang pembuktian bagi masa depan mungkin penambahan jawa.waktu. Anda mungkin menemukan beberapa kelas yang berguna di sini seperti
Interval
,YearWeek
,YearQuarter
, dan lebih.UPDATE: Ini "Joda-Waktu" bagian bawah dibiarkan utuh sebagai sejarah. The Joda-Waktu proyek, sekarang di maintenance mode, menyarankan migrasi ke jawa.waktu kelas. Joda-Waktu
Jawaban lain yang benar berkaitan dengan paket java.util.Tanggal dan jawa.util.Kalender kelas-kelas. Tetapi kelas-kelas yang sangat merepotkan. Jadi di sini's beberapa contoh kode menggunakan Joda-Waktu 2.3 perpustakaan. Jika anda benar-benar ingin kencan tanpa ada porsi waktu dan zona waktu, kemudian gunakan
LocalDate
kelas dalam Joda-Waktu. Bahwa class menyediakan metode perbandingan seperticompareTo
(digunakan dengan Jawa Comparator),isBefore
,isAfter
, dansama dengan
. Input...Menentukan formatter menggambarkan input string...
Menggunakan formatter untuk mengurai string ke LocalDate benda-benda...
Dump untuk konsol...
Ketika menjalankan...
Begitu melihat apakah kedua adalah antara lain dua (secara eksklusif, artinya tidak sama dengan baik endpoint)...
Bekerja Dengan Rentang Waktu Yang
Jika anda bekerja dengan bentang waktu, saya sarankan mengeksplorasi dalam Joda-Waktu perkuliahan: Durasi, Interval, dan Periode. Metode seperti
tumpang tindih
danberisi
membuat perbandingan mudah. Untuk teks representasi, lihat standar ISO 8601 ini:Format: PnYnMnDTnHnMnS
Contoh: P3Y6M4DT12H30M5S
(Berarti "tiga tahun, enam bulan, empat hari, dua belas jam, tiga puluh menit, dan lima detik")
Format: start/end
Contoh: 2007-03-01T13:00:00Z/2008-05-11T15:30:00Z Joda-Waktu kelas dapat bekerja dengan string di kedua format tersebut, baik sebagai masukan (parsing) dan output (menghasilkan string). Joda-Kali melakukan perbandingan dengan menggunakan Setengah Terbuka pendekatan mana awal rentang inklusif sedangkan ending exclusive. Pendekatan ini adalah bijaksana untuk menangani rentang waktu. Pencarian StackOverflow untuk info lebih lanjut.
Membandingkan dua tanggal:
Update Java 8 dan kemudian
isAfter()
isBefore()
isEqual()
compareTo()
Metode ini ada di
LocalDate
,LocalTime
, danLocalDateTime
kelas.Kelas-kelas yang dibangun ke Jawa 8 dan kemudian. Banyak dari jawa.waktu fungsi back-porting ke Jawa 6 & 7 di ThreeTen-Backport dan selanjutnya disesuaikan untuk Android di ThreeTenABP (lihat Cara menggunakan...).
Anda dapat menggunakan [
Tanggal.getTime()
][1] yaitu:Ini berarti anda dapat membandingkan mereka seperti angka:
Gunakan getTime() untuk mendapatkan nilai numerik dari tanggal, dan kemudian membandingkan dengan menggunakan kembali nilai-nilai.
Coba ini
Metode ini bekerja untuk saya:
Kode ini menentukan hari dalam beberapa durasi.. berdasarkan KOREA lokal