Artikel ini berbagi metode umum operasi waktu kalender, konten spesifiknya adalah sebagai berikut
Tes Paket; Impor Java.Text.SimpledateFormat; Impor java.util.calendar; impor java.util.date;/** * Metode umum tanggal dan kalender, banyak metode tanggal telah ditinggalkan, Calendar adalah yang utama (Public Classd {@Author tuzongxun123 */Calendar Public DATERDAR DATA PUBLIK PUBLICD PUBLICD {author tuzongxun123 * */Calendar Public Classdiesd {// Langsung Penggunaan Tanggal untuk mendapatkan waktu sistem saat ini, Hasil: Sel 03 Mei 08:25:44 CST 2016Date Date = Tanggal baru (); // Banyak metode dalam tanggal, seperti memperoleh tahun, bulan, hari, dll., Dan pengaturan tahun tertentu, bulan, hari, dll., Tidak lagi direkomendasikan. // Disarankan untuk menggunakan berbagai metode kalender sebagai gantinya, jadi tidak ada catatan yang dibuat // Dapatkan milidetik dari tanggal yang ditentukan, yang sering digunakan untuk membandingkan ukuran dua tanggal. date.getTime (); // Gunakan kalender untuk mendapatkan waktu sistem saat ini. Anda perlu mendapatkan objek kalender dan mengonversinya menjadi kalender output tanggal kalender = calendar.getInstance (); // Metode ini setara dengan waktu kembali pada tanggal, dan mendapatkan milidetik dari kalender waktu saat ini. Hari pertama default dalam seminggu adalah Sunday Calendar.getFirstdayOfWeek (); // Mengembalikan tahun di mana tanggal kalender saat ini, seperti 2016calendar.get (1); // Kalender dikonversi hingga saat ini, hasil output: calendar (calendar. Menetapkan Tahun, Bulan, dan Hari, Hasil Output: Senin Jun 03 09:31:59 CST 2013 // Terkait Metode Ovloaded yang umum digunakan: Calendar.set (Tahun, Bulan, Tanggal, Jam Hari, Menit); // Calendar.Set (Tahun, Bulan, Tanggal, Jam, Menit, Kedua); Semua parameter adalah intcalendar.set (2013, 5, 3); System.out.println (Calendar.GetTime ()); // Gunakan Kalender untuk Menetapkan Tahun, Hasil Output: Jumat 03 Jun 09:42:43 CST 2011Calendar.set (Calendar.ear, 2011); System.out.println (Calendar.GetTime ()); // Ditetapkan bulan dengan Calendar.println (Calendar.GetTime ()); // ditetapkan Bulan Mulai Calendar. 09:45:32 CST 2011CALENDAR.SET (Calendar.month, 0); System.out.println (Calendar.GetTime ()); // Setel bulan dengan kalender dan konstanta sendiri, perhatikan bahwa bulan dimulai pada 0, mewakili hasil Januari. Calendar.FEBRUARY);System.out.println(calendar.getTime());// Set the day with Calendar and numbers, output result: Sat Feb 05 09:48:25 CST 2011// calendar.set(Calendar.DAY_OF_MONTH, 5) The result is the same;calendar.set(Calendar.DATE, 5); System.out.println (calendar.getTime ()); // Setel jam calendar.set (calendar.hour, 15); System.out.println (calendar.getTime ()); // Tetapkan waktu Kalender sesuai dengan jumlah Milliseconds Calendar.setTimeInmillis (0); 09: 25: 29String FORDATE = DATETOSTRING (Tanggal baru ()); System.out.println (Fordate); // String hingga Date, Output Hasil: THU 12 Nov 13:23:11 CST 2015Date Strdate = StringTodate ("2015-11-12 13:23:11"); Systeri. 2015Calendar Calendar2 = Datetocalendar (StrDate); System.out.println (calendar2.get (1));}/*** Konversi Tipe Tipe yang ditentukan ke string dalam format yang ditentukan** @Author: tuzongxun* @title: DateTostring* @param @param @param @param @param @param @param @param @param @param @param AM* @lemparan*/string statis datetoString (tanggal tanggal) {string str = "yyyy-mm-dd hh: mm: ss"; format SimpleDateFormat = new SimpleDateFormat (str); string dateFormat = format.Format (Tanggal); return dateFormat;}/*** Convert the String in the Specific Tanggal @Title: StringTodate* @param @param String* @return void* @Date 3 Mei 2016 9:16:38 AM* @lemparan*/static Date StringTodate (string string) {string str = "yyyy-mm-dd hh: mm: ss"; simpleDateFormat format = new SimplateFormat (date date); date date (simpledate date = {new date = date date (simpledate date = {new date = {new date = {new) date (mm: mm: ss "; date = {SimpledateFate = date = {SimpledateFate = new) format.parse (string);} catch (pengecualian e) {e.getStackTrace ();} tanggal pengembalian;}/*** Konversi tanggal Tipe Tanggal yang ditentukan ke Jenis Kalender** @Author: Tuzongxun* @Title: Datetocalendar* @param @param Tanggal* @return void* @date* Datetocalendar (tanggal tanggal) {Calendar Calendar = calendar.getInstance (); calendar.settime (tanggal); kembalikan kalender;}}Jebakan apa lagi yang ada?
Dimana lubangnya:
Dalam sebuah proyek yang saya temui sebelumnya, saya melibatkan suatu fungsi: pindahkan beberapa data ke kumpulan database MongoDB lain setiap hari, yaitu tabel database relasional. Nama koleksi ini adalah nama tetap ditambah tahun dan bulan di mana tanggal dua bulan lalu berada.
Fungsi ini ada sebelum saya bersentuhan dengan proyek ini, yang merupakan fungsi yang diimplementasikan oleh kolega saya sebelumnya, dan menulis tugas waktu Java.
Kolega itu tidak lagi ada di perusahaan kami, tetapi baru -baru ini ia menemukan bahwa fungsi ini memiliki beberapa masalah. Pergerakan data tidak seperti yang diharapkan. Data yang seharusnya ada pada bulan Februari muncul di tabel Januari.
Akar lubang:
Masalah yang berhubungan dengan MongoDB untuk sementara dipertahankan oleh saya, dan masalah ini secara alami perlu diselesaikan oleh saya, jadi saya mengeluarkan kodenya dan membacanya. Akibatnya, masalahnya ditemukan sebagai metode kalender yang relevan.
Untuk mentransfer data dari dua bulan lalu, Anda harus terlebih dahulu mendapatkan tanggal dari dua bulan lalu. Kode yang relevan untuk menghasilkan nama tabel adalah sebagai berikut:
Private String getDataCollectionName () {calendar calendar = calendar.getInstance (); coba {calendar.set (calendar.date, -day); kembalikan "alarm_" + toolutils.datetoformatstrdate (calendar.gettime (), "yyyy_mm"); } catch (exception e) {logger.error ("{}: Data transformasi gagal, {}", this.getClass (). getName (), e.getMessage ()); } return null; }Masalahnya terletak pada metode yang ditetapkan kalender, termasuk waktu mulai dan akhir penggunaan data kueri nanti, dan hal yang sama digunakan adalah calendar.set (calendar.date, -day);
Pada pandangan pertama, metode ini tampaknya menetapkan tanggal ke tanggal saat ini dikurangi jumlah hari yang ditentukan, tetapi pada kenyataannya hasilnya tidak seperti yang diharapkan seperti Anda akan mendapatkan tanggal dua bulan lalu (hari di sini mendefinisikan 60, yaitu, dua bulan).
Isi lubang:
Setelah menemukan alasannya, saya mengganti metode ini dan mengubah set untuk ditambahkan. Adapun parameter di dalamnya, itu tidak dipindahkan. Hasilnya membuktikan bahwa metode ini dapat benar -benar mewujudkan fungsi saat ini, dan hasil yang diperoleh adalah hasil yang diharapkan.
Tentu saja, Anda juga dapat mengubah parameter sedikit tanpa mengubah metode, seperti calendar.set (calendar.date, calendar.get (calendar.date) -day);
Di atas adalah semua tentang artikel ini, dan saya harap akan sangat membantu bagi semua orang untuk menguasai metode umum operasi waktu kalender.