Java menyediakan kelas tanggal dalam paket java.util, yang merangkum tanggal dan waktu saat ini.
Kelas tanggal mendukung dua konstruktor. Konstruktor pertama menginisialisasi tanggal dan waktu objek saat ini.
Tanggal( )
Konstruktor berikut menerima parameter yang sama dengan jumlah milidetik sejak tengah malam pada 1 Januari 1970
Tanggal (Millisec Panjang)
Setelah ada objek tanggal yang tersedia, Anda dapat menghubungi salah satu metode yang didukung berikut untuk menggunakan waktu:
| Sn | Metode dan deskripsi |
|---|---|
| 1 | boolean setelah (tanggal tanggal) Kembalikan true jika objek tanggal panggilan berisi atau lebih lambat dari tanggal yang ditentukan, jika tidak, kembalikan FALSE. |
| 2 | Boolean Sebelum (Tanggal Tanggal) Kembalikan true jika objek Tanggal Panggilan berisi atau lebih awal dari tanggal yang ditentukan pada tanggal, jika tidak, kembalikan FALSE. |
| 3 | Objek clone () Ulangi panggilan ke objek tanggal. |
| 4 | int compareto (tanggal tanggal) Bandingkan nilai objek panggilan dengan tanggal. Jika kedua nilai ini sama, pengembalian 0. Mengembalikan nilai negatif jika objek panggilan lebih awal dari tanggal. Mengembalikan nilai positif jika objek panggilan lebih lambat dari tanggal. |
| 5 | int compareto (objek obj) Gunakan operasi compareto (tanggal) yang sama jika OBJ adalah tanggal kelas. Kalau tidak, ia melempar ClassCastException. |
| 6 | boolean sama (tanggal objek) Kembalikan true jika objek Tanggal Panggilan berisi waktu dan tanggal yang sama tanggal yang ditentukan, jika tidak, kembalikan FALSE. |
| 7 | Long GetTime () Mengembalikan jumlah milidetik yang telah berlalu sejak 1 Januari 1970. |
| 8 | int hashcode () Mengembalikan kode hash dari objek panggilan. |
| 9 | void setTime (lama) Menetapkan waktu yang ditentukan, yang mewakili waktu yang berlalu dalam milidetik dari tengah malam pada 1 Januari 1970. |
| 10 | String tostring () Hubungi objek tanggal untuk dikonversi ke string dan mengembalikan hasilnya. |
impor java.util.date; kelas publik tanggal {public static void main (string args []) {// instantiate tanggal tanggal objek tanggal = tanggal baru (); // Tampilkan waktu dan tanggal menggunakan tostring () system.out.println (date.toString ()); }}Ini akan menghasilkan hasil berikut:
Mon 04 Mei 09:51:52 CDT 2009
Perbandingan tanggal
Ada tiga cara untuk membandingkan dua tanggal:
Tanggal Format Menggunakan SimpleDateFormat
SimpleDateFormat adalah kelas konkret yang digunakan secara lokal untuk memformat dan mengonversi tanggal. SimpleDateFormat memungkinkan pemilihan skema yang ditentukan pengguna untuk format saat ini dan waktu. Misalnya:
impor java.util.*; impor java.text.*; kelas publik tanggal {public static void main (string args []) {date dnow = new date (); SimpleDateFormat ft = new SimpleDateFormat ("e yyyy.mm.dd 'di' hh: mm: ss a zzz"); System.out.println ("Tanggal Saat Ini:" + ft.Format (DNOW)); }}Ini akan menghasilkan hasil berikut:
Tanggal Saat Ini: Sun 2004.07.18 di 04:14:09 PM PDT
Kode format DateFormat Sederhana
Untuk menentukan format waktu, gunakan string pola waktu. Dalam pola ini, semua huruf ASCII dipertahankan sebagai huruf pola, yang didefinisikan sebagai berikut:
| karakter | menggambarkan | contoh |
|---|---|---|
| G | Indikator waktu | IKLAN |
| y | Empat digit tahun | 2001 |
| M | Pertengahan tahun | Juli atau 07 |
| D | Tanggal bulan ini | 10 |
| H | Waktu AM/PM (1 ~ 12) | 12 |
| H | Jam di Hari (0 ~ 23) | dua puluh dua |
| M | Menit jam | 30 |
| S | Detik menit | 55 |
| S | milidetik | 234 |
| E | Hari dalam seminggu | Selasa |
| D | Hari tahun ini | 360 |
| F | Hari dalam seminggu di bulan ini | 2 (Rabu Kedua di bulan Juli) |
| w | Pertengahan tahun minggu | 40 |
| W | Minggu dalam sebulan | 1 |
| A | Penanda AM/PM | PM |
| k | Jam demi hari (1 ~ 24) | Dua Puluh Empat |
| K | Jam AM/PM (0 ~ 11) | 10 |
| z | Zona waktu | Waktu Standar Timur |
| ' | Tinggalkan teks | Pembatas |
| " | Kutipan tunggal | ` |
impor java.util.date; kelas publik tanggal {public static void main (string args []) {// instantiate tanggal tanggal objek tanggal = tanggal baru (); // Tampilkan waktu dan tanggal menggunakan ToString () String str = String.Format ("Tanggal/Waktu Saat Ini: %TC", Tanggal); System.out.printf (str); }}Ini akan menghasilkan hasil berikut:
Tanggal/Waktu Saat Ini: Sabtu 15 Des 16:37:57 MST 2012
Ini adalah praktik yang buruk untuk memberikan berbagai format tanggal. String format dapat menunjukkan indeks parameter yang akan diformat.
Indeks harus segera diikuti oleh % dan harus diakhiri dengan $. Misalnya:
impor java.util.date; kelas publik tanggal {public static void main (string args []) {// instantiate tanggal tanggal objek tanggal = tanggal baru (); // Tampilkan waktu dan tanggal menggunakan tostring () system.out.printf (" %1 $ S %2 $ tb %2 $ td, %2 $ ty", "Tanggal jatuh tempo:", tanggal); }}Ini akan menghasilkan hasil berikut:
Tanggal jatuh tempo: 09 Februari 2004
Atau, <bendera dapat digunakan. Ini berarti parameter yang sama dan harus digunakan lagi sesuai dengan spesifikasi format di atas. Misalnya:
impor java.util.date; kelas publik tanggal {public static void main (string args []) {// instantiate tanggal tanggal objek tanggal = tanggal baru (); // Tampilan System Tanggal yang diformat.out.printf (" %S %TB %<te, %<ty", "tanggal jatuh tempo:", tanggal); }}Ini akan menghasilkan hasil berikut:
Tanggal jatuh tempo: 09 Februari 2004
Karakter Konversi Tanggal dan Waktu
| karakter | menggambarkan | contoh |
|---|---|---|
| C | Tanggal dan Waktu Lengkap | Mon 04 Mei 09:51:52 CDT 2009 |
| F | Tanggal ISO 8601 | 2004-02-09 |
| D | Waktu format AS (bulan/hari/tahun) | 02/09/2004 |
| T | Sistem 24 kali | 18:05:19 |
| R | Sistem 12 kali | 06:05:19 PM |
| R | Sistem 24 kali, tidak ada detik | 18:05 |
| Y | Empat digit tahun (menggunakan kolom nol baris pertama) | 2004 |
| y | Dua digit terakhir tahun ini (menggunakan kolom Baris Nol Pertama) | 04 |
| C | Dua digit pertama tahun ini (menggunakan kolom nol baris pertama) | 20 |
| B | Nama Bulan Penuh | Februari |
| B | Nama Bulan Singkatan | Feb |
| M | Dua digit bulan (menggunakan kolom nol baris pertama) | 02 |
| D | Tanggal dua digit (menggunakan kolom nol baris pertama) | 03 |
| e | Tanggal dua digit (No Forward Zero Column) | 9 |
| A | Nama minggu penuh | Senin |
| A | Singkatan dari nama minggu ini | Senin |
| J | Tiga digit hari di pertengahan tahun (menggunakan kolom Baris Nol Pertama) | 069 |
| H | Dua digit jam (menggunakan kolom nol baris pertama), antara 00 dan 23 | 18 |
| k | Dua digit jam (tidak ada kolom nol ke depan), antara 0 dan 23 | 18 |
| SAYA | Dua digit jam (menggunakan kolom nol baris pertama), antara 01 dan 12 | 06 |
| l | Dua digit jam (tidak ada kolom nol ke depan), antara 1 dan 12 | 6 |
| M | Dua digit menit (gunakan kolom nol baris pertama) | 05 |
| S | Dua digit detik (gunakan kolom nol baris pertama) | 19 |
| L | Tiga digit milidetik (menggunakan kolom nol baris pertama) | 047 |
| N | Sembilan digit nanoseconds (menggunakan kolom Baris Zero pertama) | 047000000 |
| P | Tanda Sore Kapitalisasi | PM |
| P | Tanda sore kecil | pm |
| z | RFC 822 Offset dari Nomor GMT | -0800 |
| Z | Zona waktu | PST |
| S | Detik dari 1970-01-01 00:00:00 GMT | 1078884319 |
| Q | GMT dari 1970-01-01 00:00:00 | 1078884319047 |
Tanggal Konversi String
Kelas SimpleDateFormat memiliki beberapa metode tambahan, seperti parse (), yang berupaya mengonversi string berdasarkan format objek yang disimpan dalam SimpleDateFormat yang diberikan. Misalnya:
impor java.util.*; impor java.text.*; kelas publik tanggal {public static void main (string args []) {SimpleDateFormat ft = new SimpleDateFormat ("yyyy-mm-dd"); Input string = args.length == 0? "1818-11-11": args [0]; System.out.print (input + "parse as"); Tanggal t; coba {t = ft.parse (input); System.out.println (t); } catch (parseException e) {System.out.println ("Tidak dapat diputar" + ft); }}}Contoh berjalan dari program di atas akan menghasilkan hasil berikut:
$ java DateMo1818-11-11 Parses As Wed 11 Nov 00:00:00 GMT 1818 $ Java DateMo 2007-12-012007-12-01 Parse As Sat Des 01 00:00:00 GMT 2007
Tidur sebentar
Anda dapat melakukan kapan saja selama hibernasi dari milidetik hingga seluruh siklus hidup komputer Anda. Misalnya, program berikut akan tidur selama 10 detik:
impor java.util.*; kelas publik sleepdemo {public static void main (string args []) {try {system.out.println (tanggal baru () + "/n"); Thread.sleep (5*60*10); System.out.println (tanggal baru () + "/n"); } catch (Exception e) {System.out.println ("Got A Exception!"); }}}Ini akan menghasilkan hasil berikut:
Sun Mei 03 18:04:41 GMT 2009Sun 03 Mei 18:04:51 GMT 2009
Ukur waktu eksekusi
Terkadang, titik waktu yang mungkin diukur mungkin dalam milidetik. Jadi, mari kita tulis ulang contoh di atas lagi:
impor java.util.*; kelas publik difdemo {public static void main (string args []) {coba {long start = system.currentTimeMillis (); System.out.println (tanggal baru () + "/n"); Thread.sleep (5*60*10); System.out.println (tanggal baru () + "/n"); long end = system.currentTimemillis (); Long Diff = end - Mulai; System.out.println ("Perbedaan adalah:" + diff); } catch (Exception e) {System.out.println ("Got A Exception!"); }}}Ini akan menghasilkan hasil berikut:
Sun Mei 03 18:16:51 GMT 2009Sun 03 Mei 18:16:57 GMT 2009difference adalah: 5993
Kelas Gregoriancalendar
Gregoriancalendar adalah implementasi konkret dari kelas kalender, yaitu implementasi Gregorian Gregorian Gregorian yang normal yang Anda kenal. Kelas kalender tidak dibahas dalam tutorial ini, Anda dapat memeriksa dokumentasi Java standar.
Metode Calendar's GetInstance () mengembalikan Gregoriancalendar yang diinisialisasi dengan tanggal dan waktu dan waktu saat dan waktu saat ini. Dua bidang didefinisikan dalam Gregoriancalendar: AD dan BC. Ini mewakili dua era yang didefinisikan dalam kalender Gregorian.
Ada juga beberapa konstruktor objek Gregoriancalendar:
| Sn | Deskripsi konstruktor |
|---|---|
| 1 | Gregoriancalendar () Bangun GregorianCalendar default menggunakan waktu saat ini di zona waktu default dengan lokal default. |
| 2 | Gregoriancalendar (tahun int, bulan int, tanggal int) Tetapkan lokal default di zona waktu default untuk membangun Gregoriancalendar dengan tanggal yang diberikan |
| 3 | Gregoriancalendar (tahun int, bulan int, tanggal int, jam int, menit int) Membangun GregorianCalendar dengan tanggal dan waktu yang diberikan ditetapkan ke zona waktu default dengan lokal default. |
| 4 | Gregoriancalendar (tahun int, bulan int, tanggal int, jam int, int menit, int kedua) Bangun Gregoriancalendar dengan tanggal dan waktu yang diberikan yang ditetapkan ke zona waktu default dengan lokasi default |
| 5 | Gregoriancalendar (Lokal Alocale) Bangun Gregoriancalendar berdasarkan waktu saat ini dan zona waktu default dari lokal yang diberikan. |
| 6 | Gregoriancalendar (zona zona waktu) Berdasarkan waktu saat ini, Gregoriancalendar dibangun di zona waktu tertentu menggunakan lokasi default. |
| 7 | Gregoriancalendar (TimeZone Zone, Local Alocale) Gregoriancalendar dibangun berdasarkan waktu saat ini dan zona waktu yang diberikan dari lokal yang diberikan. |
| Sn | Metode dan deskripsi |
|---|---|
| 1 | void add (bidang int, jumlah int) Aturan berbasis kalender menambahkan jumlah waktu yang ditentukan (ditandatangani) ke bidang waktu yang diberikan. |
| 2 | computefields void yang dilindungi () Konversi UTC ke nilai bidang waktu milidetik. |
| 3 | computetime void yang dilindungi () Timpa milidetik di mana kalender mengonversi nilai domain waktu adalah UTC. |
| 4 | boolean sama (objek obj) Gregoriancalendar ini dibandingkan dengan referensi objek. |
| 5 | int get (bidang int) Mendapat nilai dari domain waktu yang diberikan. |
| 6 | int getActualMaximum (bidang int) Mengembalikan nilai maksimum yang mungkin dari bidang, diberikan ke tanggal saat ini. |
| 7 | int getactualminimum (bidang int) Mengembalikan nilai minimum yang mungkin dimiliki lapangan, mengingat tanggal saat ini. |
| 8 | int getgreateStminimum (bidang int) Mengembalikan nilai tinggi dan terendah (jika ada perubahan) untuk bidang yang diberikan. |
| 9 | Tanggal getgregorianchange () Dapatkan tanggal perubahan dalam kalender Gregorian. |
| 10 | int getleastmaximum (bidang int) Mengembalikan nilai maksimum terendah untuk bidang yang diberikan, jika ada perubahan. |
| 11 | int getmaximum (bidang int) Mengembalikan nilai maksimum di bidang yang diberikan. |
| 12 | Tanggal GetTime () Dapatkan waktu kalender saat ini. |
| 13 | Long getTimeInmillis () Waktu saat ini untuk mendapatkan kalender. |
| 14 | Timezone getTimeZone () Dapatkan zona waktu. |
| 15 | int getMinimum (bidang int) Mengembalikan nilai minimum di bidang yang diberikan. |
| 16 | int hashcode () Tulis ulang kode hash. |
| 17 | Boolean Isleapyear (tahun int) Menentukan bahwa tahun tertentu adalah tahun kabisat. |
| 18 | void roll (bidang int, boolean up) Tambahkan atau kurangi waktu (naik/turun) (naik/turun) unit dalam bidang waktu yang diberikan, tanpa mengubah bidang yang lebih besar. |
| 19 | set void (bidang int, nilai int) Mengatur bidang waktu dengan nilai yang diberikan. |
| 20 | set void (tahun int, bulan int, tanggal int) Diatur ke nilai tahun, bulan, dan hari. |
| dua puluh satu | set void (tahun int, bulan int, tanggal int, int jam, int menit) Ditetapkan nilai tahun, bulan, hari, jam dan menit. |
| dua puluh dua | void set (tahun int, bulan int, tanggal int, int jam, int menit, int detik) Atur nilai tahun, bulan, hari, jam, menit, dan kedua lapangan. |
| dua puluh tiga | void setgregorianchange (tanggal tanggal) Tetapkan tanggal perubahan Gregoriancalendar. |
| Dua Puluh Empat | void setTime (tanggal tanggal) Menetapkan waktu saat ini dan tanggal kalender yang diberikan. |
| 25 | void setTimeInmillis (long millis) Atur waktu kalender saat ini dari nilai panjang yang diberikan. |
| 26 | void setTimeZone (nilai timeZone) Menetapkan zona waktu dengan nilai zona waktu yang diberikan. |
| 27 | String tostring () Mengembalikan representasi string dari kalender ini. |
impor java.util.*; kelas publik gregoriancalendardemo {public static void main (string args []) {string bulan [] = {"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep" tahun int; // Buat GregorianCalendar Inisialisasi // dengan tanggal dan waktu saat ini di // Lokal dan TimeZone default. Gregoriancalendar gcalendar = Gregoriancalendar baru (); // Tampilkan informasi waktu dan tanggal saat ini. System.out.print ("Tanggal:"); System.out.print (bulan [gcalendar.get (calendar.month)]); System.out.print ("" + gcalendar.get (calendar.date) + ""); System.out.println (tahun = gcalendar.get (calendar.year)); System.out.print ("Time:"); System.out.print (gcalendar.get (calendar.hour) + ":"); System.out.println (gcalendar.get (calendar.minute) + ":"); System.out.println (gcalendar.get (calendar.second)); // uji jika tahun berjalan adalah tahun lompatan jika (gcalendar.isleapyear (tahun)) {System.out.println ("Tahun berjalan adalah tahun kabisat"); } else {System.out.println ("Tahun ini bukan tahun kabisat"); }}}Ini akan menghasilkan hasil berikut:
Tanggal: 22 Apr 2009time: 11: 25: 27 Tahun ini bukan tahun kabisat
Applet Kalender
Mari kita lihat applet kalender. Di sini kami menggunakan struktur MVC tradisional untuk merancang tiga kategori: CalendarViewer, CalendarController, dan Calendarmodel.
Calendarviewer.java terutama memproses UI, menggunakan kode yang ada, mengaturnya dan mengekstrak logika bisnis, sehingga berfokus pada pemrosesan lapisan tampilan.
Calendarviewer.java
CalendarViewer kelas publik memperluas JWindow mengimplementasikan ActionListener {jpanel calendaryMPanel = null; Jbutton leftbutton = jbutton baru ("<<"); Jbutton rightbutton = jbutton baru (">>"); Label yearlabel = label baru (); Label bulan label = label baru (); Label labelslabelslabel = label baru (); Jpanel calendarwdpanel = null; // adalah badan inklusi total calendar_week dan calendar_days jpanel calendarweekpanel = null; // tata letak untuk kolom mingguan jpanel calendardayspanel = null; // tata letak untuk kencan kolom jpanel calendarexpanel = null;/ tata letak; kencan jpanel calendare calendarexpanel = null;/ tata letak; Jbutton quitbutton = jbutton baru ("tutup"); Border emptborder = borderfactory.createemptyborder (); CalendarController CController = CalendarController baru (); CalendarViewer publik () {super (); buildui (); } public void buildUi () {buildtopPanel (); buildCenterPanel (); buildbottompanel (); setLayout (borderlayout baru ()); . . . . . . } private void buildtopPanel () {. . . . . . } private void buildCenterPanel () {. . . . . . } private void buildbottompanel () {. . . . . . } public jpanel updateDayspanel () {. . . . . . } public void updatePassEddaySlabel () {. . . . . . } public void actionPerformed (actionEvent e) {. . . . . . } public static void main (string [] args) {swingutilities.invokelater (runnable baru () {public void run () {new calendarViewer ();}}); }}Struktur UI terutama dibagi menjadi 3 blok, sesuai dengan tiga panel pada gambar atas, tengah dan bawah.
Pemrosesan mendengarkan acara diselesaikan dengan metode berikut.
Pembaruan UI berbasis acara dilakukan dengan dua metode berikut.
Diperbarui WaysPanel (); UpdatePasseddaysLabel (); CalendarController.java terutama berkaitan dengan logika bisnis tertentu, sementara beberapa logika algoritma kalender yang digunakan yang tidak terkait dengan aplikasi spesifik diserahkan ke calendarmodel.java. Calendarmodel.javapublic Calendarmodel {private int daytab [] [] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30, 31, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, public boolean isleapyear (int tahun) {return ((tahun % 4 == 0 && tahun % 100! = 0) || tahun % 400 == 0); } public int dayofyear (int day, int month, int tahun) {int leap = isleapyear (tahun)? 1: 0; untuk (int i = 1; i <bulan; i ++) hari+= daytab [leap] [i]; Hari Kembali; } public int DaysOfOfmonth (bulan int, tahun int) {int leap = isleapyear (tahun)? 1: 0; return daytab [lompatan] [bulan]; } public int dayofweek (int day, int month, int tahun) {if (bulan == 1) {bulan = 13; tahun--; } if (bulan == 2) {bulan = 14; tahun--; } return (hari + 2 * bulan + 3 * (bulan + 1) / 5 + tahun + tahun / 4 - tahun / 100 + tahun / 400) % 7 + 1; }}Buat array dua dimensi yang mewakili jumlah hari per bulan untuk tahun-tahun lompatan dan tahun-tahun non-leap masing-masing. Metode utamanya adalah:
Formula Perhitungan Kim Larson