Saya memiliki objek Date di Java yang disimpan sebagai tipe Date Java.
Saya juga memiliki tanggal yang dibuat Kalender Gregorian. Tanggal kalender gregorian tidak memiliki parameter dan oleh karena itu merupakan turunan dari tanggal hari ini (dan waktu?).
Dengan tanggal java, saya ingin bisa mendapatkan tahun, bulan, hari, jam, menit, dan detik dari tipe tanggal java dan membandingkan tanggal kalender gregorian.
Saya melihat bahwa saat ini tanggal Java disimpan sebagai panjang dan satu-satunya metode yang tersedia tampaknya hanya menulis panjang sebagai string tanggal yang diformat. Apakah ada cara untuk mengakses Tahun, bulan, hari, dll?
Saya melihat bahwa getYear()
, getMonth()
, dll metode untuk Date
kelas telah usang. Saya bertanya-tanya apa praktik terbaik untuk menggunakan contoh Java Date yang saya miliki dengan GregorianCalendar
tanggal.
Tujuan akhir saya adalah melakukan perhitungan tanggal sehingga saya dapat memeriksa bahwa tanggal Java berada dalam banyak jam, menit, dll dari tanggal dan waktu hari ini.
Saya masih pemula di Jawa dan saya agak bingung dengan ini.
sumber
Date.getYear()
. Menderita masalah (yang saya tidak tahu).Date.getYear()
pernah menguraikan tanggal saya 30/06/2017 dan mengembalikan tahun saya sebagai 117. Lihat di mana ia mendarat, dua ribu tahun yang lalu. Tetapi ketika saya mencetak hanya Obyek Tanggal, Output baik-baik saja. Tapi tidakDate.getYear();
.Jawaban:
Gunakan sesuatu seperti:
Hati-hati, bulan dimulai dari 0, bukan 1.
Sunting : Karena Java 8 lebih baik menggunakan java.time.LocalDate daripada java.util.Calendar . Lihat jawaban ini untuk cara melakukannya.
sumber
cal.add(Calendar.DAY_OF_MONTH, -48)
aritmatika hari pada objek Kalender. Dan Anda dapat membandingkan dua objek Kalender menggunakancal.compareTo(anotherCal)
.Dengan Java 8 dan yang lebih baru, Anda dapat mengonversi objek Tanggal ke a objek LocalDate dan kemudian dengan mudah mendapatkan tahun, bulan, dan hari.
Perhatikan bahwa
getMonthValue()
mengembalikan nilai int dari 1 hingga 12.sumber
LocalDate
Java 8 adalah solusi terbaik yang menghemat waktu Anda, solusi lain menggunakanCalendar
danDate
penuh masalah.Anda dapat melakukan sesuatu seperti ini, ini akan menjelaskan cara kerja
Date
kelas.sumber
mm
menunjukkan menit, huruf besarMM
berarti bulan-tahun.EDIT: Output untuk
date
=Fri Jun 15 09:20:21 CEST 2018
adalah:sumber
sumber
sumber
java.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle .getYearMonthDay2 (solusi kalender) sepuluh kali lebih cepat. Sekarang Anda sudah memiliki MM-00 00 00 00, dan kemudian membandingkan menggunakan date.compare
sumber
Mungkin lebih mudah
sumber
Hati-hati mount mulai dari 0 bukan 1. Dan juga Kalender menggunakan pm seperti saya sehingga sangat hati-hati saat menggunakan Jam dan menit.
sumber