Selama pengembangan Java, saya pasti terjerat dengan jenis tanggal. Saya akan meringkas operasi terkait tanggal yang sering digunakan proyek. JDK Versi 1.7. Jika itu dapat membantu Anda menghemat beberapa menit untuk bangun dan bergerak dan membuat secangkir kopi, itu akan sangat bagus. Hehe. Tentu saja, saya hanya memberikan solusi yang layak dan tidak dijamin sebagai praktik terbaik, dan diskusi dipersilakan.
1. Nilai tanggal
Di era JDK lama, ada banyak kode yang menggunakan kelas java.util.Date dalam hal nilai tanggal. Namun, karena kelas tanggal tidak nyaman untuk mencapai internasionalisasi, disarankan untuk menggunakan kelas java.util.calendar untuk pemrosesan waktu dan tanggal mulai dari JDK1.1. Saya tidak akan memperkenalkan operasi kelas tanggal di sini. Mari kita langsung ke topik dan cara menggunakan kelas kalender untuk mendapatkan tanggal dan waktu saat ini.
Karena metode konstruktor Calendar dimodifikasi dengan dilindungi, kami akan membuat objek kalender melalui metode getInstance yang disediakan dalam API.
// Ada beberapa metode kelebihan beban untuk membuat Kalender Kalender Kalender sekarang = Calendar.getInstance (); // default // Tentukan zona waktu dan wilayah, atau Anda hanya dapat memasukkan salah satu parameter kalender sekarang = calendar.getInstance (timeZone, locale);
Kemudian kita dapat memperoleh berbagai parameter waktu saat ini melalui objek.
int tahun = now.get (calendar.year); //, bulan saat ini int bulan = now.get (calendar.month) +; //, bulan saat ini, silakan tambahkan int day = now.get (calendar.date); //, tanggal hari ini tanggal = now.getTime (); // Langsung Dapatkan Tanggal Jenis Tanggal
Untuk mendapatkan jenis data waktu lainnya, Anda hanya perlu memodifikasi parameter di Now.get (). Selain tiga parameter di atas, parameter lain yang umum digunakan adalah sebagai berikut:
• calendar.day_of_month: tanggal, sama seperti calendar.date
• Kalender.Hour: 12 jam jam
• calendar.hour_of_day: Jumlah jam dalam sistem 24 jam
• Kalender. Minute: menit
• Kalender. Detik: detik
• calendar.day_of_week: mingguan
Selain mendapatkan data waktu, kami juga dapat mengatur berbagai parameter waktu melalui objek kalender.
// Tetapkan hanya nilai bidang tertentu // set final public final (bidang int, nilai int) sekarang.set (calendar.year,); // set tahun, bulan, hari, jam, bulan, hari, jam, menit, kedua // set final public set (tahun int, bulan int, tanggal int [, int jam hari, int menit, int kedua]) sekarang.set (,, [,,,]); // Daftar Tanggal Jenis Tanggal Langsung // Publik Final Void SetTime (Tanggal Tanggal) Sekarang.set (Tanggal);
Melihat:
• Ketika parameter waktu ditetapkan, nilai -nilai lain yang relevan akan dihitung ulang. Misalnya, ketika Anda menetapkan tanggal ke 11, perubahan yang sesuai akan dilakukan pada minggu ini.
• Bulan yang Anda dapatkan plus 1. Bulan yang sebenarnya adalah satu.
• Di kelas kalender, hari Minggu adalah 1, Senin adalah 2, dan seterusnya.
2. Konversi tanggal
Setelah mengobrol tentang tanggal, mari kita bicara tentang konversi tanggal. Konversi umumnya konversi timbal balik antara tanggal tipe tanggal dan string tipe string. Saya terutama menggunakan java.text.SimpledateFormat untuk operasi konversi.
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); coba {// tanggal ke string kalender kalender = calendar.getInstance (); Tanggal tanggal = calendar.getTime (); String dateStringParse = sdf.format (date); // string ke date string dateString dateString = "- ::"; Date DateParse = sdf.parse (dateString); } catch (parseException e) {e.printstacktrace (); }Melihat:
• Format konversi harus ditentukan saat membuat objek SimpleDateFormat.
• Format konversi adalah sensitif kasus, yyyy mewakili tahun, mm mewakili bulan, DD mewakili tanggal, HH mewakili jam pada tahun 2011, HH mewakili jam pada 1011, mm mewakili menit, dan SS mewakili detik.
3. Penambahan dan Pengurangan Tanggal
Secara umum, kami akan melakukan dua tambahan dan operasi pengurangan pada tanggal:
• Berdasarkan tanggal, hitung tanggal sebelum/sesudah, sebelum/sesudah, atau sebelum/sesudah, atau sebelum dan sesudah unit waktu lainnya.
// Hitung kalender sekarang = calendar.getInstance (); Now.Add (Calendar.Year,); // setelah tahun saat ini sekarang.add (calendar.year, -); // Sebelum tahun waktu saat ini // Hitung Kalender SpecialDate = Calendar.GetInstance (); SpecialDate.Settime (tanggal); // Perhatikan bahwa nilai SpecialDate diubah ke tanggal spesifik specialDate.Add (Calendar.year,); // Setelah tahun waktu khusus SpecialDate.Add (Calendar.year, -); // sebelum tahun waktu tertentu
Perhatikan bahwa metode tambah objek kalender digunakan. Anda dapat mengubah kalender.
• Hitung interval antara dua kali, misalnya, berapa hari sekarang ada pada 1 Januari 2016.
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); String dateString = "- ::"; Kalender kalender = calendar.getInstance (); long nowdate = calendar.getTime (). getTime (); //Date.getTime () Dapatkan tanggal milidetik coba {long specialDate = sdf.parse (dateString) .getTime (); long netweendate = (SpecialDate - NowDate) / ( * * *); // Hitung berapa hari terpisah, bagilah dengan rumus konversi milidetik ke days system.out.print (betweendate); } catch (parseException e) {e.printstacktrace (); } 4. Perbandingan tanggal
Melihat melalui kode saya sebelumnya, saya menemukan bahwa setiap kali saya melakukan operasi perbandingan tanggal, pertama -tama saya akan mengonversi tanggal menjadi string dalam format "yyyymmdd", kemudian mengonversi string ke nilai, dan kemudian membandingkan ukuran nilai. Haha, ini adalah operasi perbandingan sederhana, tetapi dibutuhkan lebih dari selusin baris kode untuk ditulis, yang agak tak tertahankan. Sekarang kita harus berbicara tentang postur perbandingan tanggal yang benar.
Umumnya ada dua metode untuk perbandingan tanggal, yang umum untuk java.util.date atau java.util.calendar. Salah satunya adalah membandingkan dengan metode sebelum () melalui setelah (), dan yang lainnya adalah untuk metode compareto () melalui metode perbandingan ().
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); string dateString_01 = "2016-01-01 11:11:11"; string dateString_02 = "2016-01-02 11:11:11"; coba {date date_01 = Sdf.01 Date date_02 = sdf.parse (dateString_02); System.out.println (date_01.before (date_02)); // Benar, ketika date_01 kurang dari date_02 ketika itu benar, jika tidak, itu adalah false System.out.println (date_02.Aphter (date_01)); // Benar, ketika date_02 lebih besar dari date_01, memang benar, jika tidak, itu adalah false System.out.println (date_01.compareto (date_02)); // -1, ketika date_01 kurang dari date_02, itu -1 System.out.println (date_02.comppareto (date_01)); // 1, ketika date_02 lebih besar dari date_01, itu adalah 1 System.out.println (date_02.comppareto (date_02)); // 0, ketika dua tanggal sama, itu adalah 0} catch (parseException e) {e.printstacktrace ();}Di atas adalah deskripsi lengkap operasi tanggal umum (nilai, konversi, penambahan dan pengurangan, perbandingan) di Java yang diperkenalkan kepada Anda dalam artikel ini. Saya harap Anda menyukainya.