masa tarikh Java
Pakej java.util menyediakan kelas Tarikh untuk merangkum tarikh dan masa semasa. Kelas Date menyediakan dua pembina untuk membuat instantiate objek Date.
Pembina pertama memulakan objek menggunakan tarikh dan masa semasa.
Date( )
Pembina kedua menerima parameter, iaitu bilangan milisaat sejak 1 Januari 1970.
Date(long millisec)
Selepas objek Date dicipta, anda boleh memanggil kaedah berikut.
Nombor siri | Kaedah dan penerangan |
---|---|
1 | boolean selepas(Tarikh tarikh) Jika objek Tarikh yang memanggil kaedah ini mengembalikan benar selepas tarikh yang ditentukan, jika tidak ia mengembalikan palsu. |
2 | boolean sebelum(Tarikh tarikh) Jika objek Tarikh yang memanggil kaedah ini mengembalikan benar sebelum tarikh yang ditentukan, jika tidak ia mengembalikan palsu. |
3 | Klon objek( ) Mengembalikan salinan objek ini. |
4 | int compareTo(Tarikh tarikh) Membandingkan objek Tarikh dan tarikh yang ditentukan apabila kaedah ini dipanggil. Apabila kedua-duanya sama, 0 dikembalikan. Jika objek panggilan adalah sebelum tarikh yang ditentukan, nombor negatif dikembalikan. Objek panggilan mengembalikan nombor positif selepas tarikh yang ditentukan. |
5 | int compareTo(Object obj) Jika obj adalah jenis Tarikh, operasi adalah bersamaan dengan compareTo(Date). Jika tidak ia membuang ClassCastException. |
6 | boolean sama dengan(Tarikh objek) Mengembalikan benar apabila objek Tarikh memanggil kaedah ini sama dengan tarikh yang ditentukan, jika tidak ia mengembalikan palsu. |
7 | long getTime( ) Mengembalikan bilangan milisaat yang diwakili oleh objek Tarikh ini sejak 1 Januari 1970 00:00:00 GMT. |
8 | int hashCode( ) Mengembalikan nilai kod cincang objek ini. |
9 | kosongkan setMasa(lama) Tetapkan masa dan tarikh dalam milisaat sejak 1 Januari 1970 00:00:00 GMT. |
10 | String keString( ) Menukar objek Tarikh kepada perwakilan Rentetan dan mengembalikan rentetan. |
Mendapatkan tarikh dan masa semasa
Mendapatkan tarikh dan masa semasa dalam Java adalah sangat mudah Gunakan kaedah toString() objek Tarikh untuk mencetak tarikh dan masa semasa, seperti yang ditunjukkan di bawah:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用 toString() 函数显示日期时间 System.out.println(date.toString()); } }
Hasil penyusunan dan larian contoh di atas adalah seperti berikut:
Mon May 04 09:51:52 CDT 2013
Perbandingan tarikh
Java menggunakan tiga kaedah berikut untuk membandingkan dua tarikh:
Gunakan kaedah getTime() untuk mendapatkan dua tarikh (bilangan milisaat sejak 1 Januari 1970), dan kemudian bandingkan kedua-dua nilai.
Gunakan kaedah sebelum(), selepas() dan sama(). Sebagai contoh, jika 12 haribulan lebih awal daripada 18, maka Tarikh baharu(99, 2, 12).sebelum(Tarikh baharu (99, 2, 18)) kembali benar.
Gunakan kaedah compareTo(), yang ditakrifkan oleh antara muka Sebanding, dan kelas Date melaksanakan antara muka ini.
Memformat tarikh menggunakan SimpleDateFormat
SimpleDateFormat ialah kelas untuk memformat dan menghuraikan tarikh dengan cara yang sensitif setempat. SimpleDateFormat membolehkan anda memilih mana-mana format tarikh dan masa yang ditentukan pengguna untuk dijalankan. Contohnya:
import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); } }
Hasil penyusunan dan larian contoh di atas adalah seperti berikut:
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT
Pengekodan format DateFormat Mudah
Rentetan corak masa digunakan untuk menentukan format masa. Dalam mod ini, semua huruf ASCII dikhaskan sebagai huruf corak, ditakrifkan seperti berikut:
Surat | Keterangan | Contoh |
---|---|---|
G | Tanda zaman | IKLAN |
y | Tahun empat angka | 2001 |
M | Bulan | Julai atau 07 |
d | Hari dalam bulan | 10 |
h | A.M./P.M. (1~12) jam format | 12 |
H | Jam dalam sehari (0~23) | 22 |
m | Bilangan minit | 30 |
s | Saat | 55 |
S | Bilangan milisaat | 234 |
E | Hari dalam seminggu | Selasa |
D | Hari dalam setahun | 360 |
F | Hari dalam minggu | 2 (Rabu kedua pada bulan Julai) |
w | Minggu dalam tahun | 40 |
W | Minggu dalam bulan | 1 |
a | A.M./P.M. markah | PM |
k | Jam dalam sehari (1~24) | 24 |
K | A.M./P.M. (0~11) jam format | 10 |
z | Zon waktu | Waktu Standard Timur |
' | Pembatas teks | Pembatas |
" | Petikan tunggal | ` |
Gunakan printf untuk memformat tarikh
Kaedah printf memudahkan untuk memformat masa dan tarikh. Gunakan format dua huruf, yang bermula dengan t dan berakhir dengan huruf daripada jadual di bawah. Contohnya:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); } }
Hasil penyusunan dan larian contoh di atas adalah seperti berikut:
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
Jika anda perlu memberikan tarikh berulang kali , gunakan kaedah ini untuk memformatkannya Setiap bahagiannya sedikit lebih rumit. Oleh itu, rentetan format boleh digunakan untuk menunjukkan indeks parameter yang akan diformatkan.
Indeks mesti mengikut % dan berakhir dengan $. Contohnya:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }
Hasil kompilasi dan larian contoh di atas adalah seperti berikut:
Due date: February 09, 2004
Atau, anda boleh menggunakan < tanda. Ia menunjukkan bahawa parameter yang telah diformatkan sebelum ini akan digunakan semula. Contohnya:
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 显示格式化时间 System.out.printf("%s %tB %<te, %<tY", "Due date:", date); } }
Hasil penyusunan dan larian contoh di atas adalah seperti berikut:
Due date: February 09, 2004
Watak Penukaran Tarikh dan Masa
Watak | Penerangan | Contoh |
c | Tarikh dan masa lengkap | Isn Mei 04 09:51:52 CDT 2009 |
F | Tarikh format ISO 8601 | 2004-02-09 |
D | Tarikh format A.S. (bulan/hari/tahun) | 02/09/2004 |
T | 24 jam | 18:05:19 |
r | 12 jam | 06:05:19 petang |
R | 24 jam, tidak termasuk saat | 18:05 |
Y | Tahun 4 digit (termasuk pendahuluan 0) | 2004 |
y | 2 digit terakhir tahun (termasuk pendahuluan 0) | 04 |
C | 2 digit pertama tahun ini (termasuk pendahuluan 0) | 20 |
B | Nama penuh bulan | Februari |
b | Singkatan bulan | Feb |
n | Bulan 2 digit (termasuk pendahuluan 0) | 02 |
d | 2 digit hari (termasuk pendahuluan 0) | 03 |
e | 2 digit hari (tidak termasuk pendahuluan 0) | 9 |
A | Nama penuh minggu ini | Isnin |
a | Singkatan minggu | Isnin |
j | Tahun 3 digit (termasuk pendahuluan 0) | 069 |
H | Jam 2 digit (termasuk pendahuluan 0), 00 hingga 23 | 18 |
k | Jam 2 digit (tidak termasuk pendahuluan 0), 0 hingga 23 | 18 |
Saya | Jam 2 digit (termasuk pendahuluan 0), 01 hingga 12 | 06 |
l | Jam 2 digit (tidak termasuk pendahuluan 0), 1 hingga 12 | 6 |
M | Minit 2 digit (termasuk pendahuluan 0) | 05 |
S | 2 digit saat (termasuk pendahuluan 0) | 19 |
L | milisaat 3 digit (termasuk pendahuluan 0) | 047 |
N | Nanosaat 9-bit (termasuk pendahuluan 0) | 047000000 |
P | Tanda petang huruf besar | PM |
p | Huruf kecil huruf besar dan tanda petang | pm |
z | RFC 822 mengimbangi digital daripada GMT | -0800 |
Z | Zon waktu | PST |
s | Bilangan saat sejak 1970-01-01 00:00:00 GMT | 1078884319 |
S | Sejak 1970-01-01 00:00:00 GMT indah | 1078884319047 |
Terdapat kelas lain berkaitan tarikh dan masa yang berguna. Untuk butiran lanjut, anda boleh merujuk kepada dokumentasi standard Java.
Menghuraikan rentetan sebagai masa
Kelas SimpleDateFormat mempunyai beberapa kaedah tambahan, terutamanya parse(), yang cuba menghuraikan rentetan mengikut storan terformat bagi objek SimpleDateFormat yang diberikan . Contohnya:
import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Parses as "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Unparseable using " + ft); } } }
Hasil kompilasi dan larian contoh di atas adalah seperti berikut:
$ java DateDemo 1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818 $ java DateDemo 2007-12-01 2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007
Java sleep (tidur)
sleep() meletakkan arus benang ke dalam keadaan bertakung (menyekat benang semasa ), tujuan menghentikan penggunaan CPU adalah untuk menghalang benang semasa daripada menduduki sumber CPU yang diperolehi oleh proses sahaja, supaya meninggalkan sejumlah masa untuk yang lain benang untuk dilaksanakan.
Anda boleh meletakkan atur cara untuk tidur selama milisaat atau selagi komputer anda bertahan. Sebagai contoh, program berikut akan tidur selama 3 saat:
import java.util.*; public class SleepDemo { public static void main(String args[]) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(1000*3); // 休眠3秒 System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Got an exception!"); } } }
Hasil penyusunan dan larian contoh di atas adalah seperti berikut:
Thu Sep 17 10:20:30 CST 2015 Thu Sep 17 10:20:33 CST 2015
Masa pengukuran
Contoh berikut menunjukkan cara mengukur selang masa (dalam milisaat):
import java.util.*; public class DiffDemo { public static void main(String args[]) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Difference is : " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } } }
Kompilasi dan larian keputusan contoh di atas adalah seperti berikut:
Fri Jan 08 09:48:47 CST 2016 Fri Jan 08 09:48:50 CST 2016 Difference is : 3019
Kelas Kalendar
Kami kini boleh memformat dan mencipta objek tarikh, tetapi bagaimana kami boleh menetapkan dan mendapatkan bahagian tertentu data tarikh, seperti jam, hari, atau minit Bagaimana kita menambah atau menolak nilai daripada bahagian tarikh ini. Jawapannya ialah menggunakan kelas Kalendar.
Kelas Kalendar jauh lebih berkuasa daripada kelas Date, dan pelaksanaannya juga lebih kompleks daripada kelas Date.
Kelas Kalendar ialah kelas abstrak yang melaksanakan objek subkelas tertentu dalam penggunaan sebenar Proses mencipta objek adalah telus kepada pengaturcara, dan hanya perlu dibuat menggunakan kaedah getInstance.
Buat objek Kalendar yang mewakili tarikh semasa sistem
Calendar c = Calendar.getInstance();//默认是当前日期
Buat objek Kalendar untuk tarikh tertentu
Untuk menggunakan kelas Kalendar untuk mewakili masa tertentu, anda perlu mencipta objek Kalendar dahulu, dan kemudian tetapkan parameter tahun, bulan dan hari dalam objek untuk dilengkapkan.
//创建一个代表2009年6月12日的Calendar对象 Calendar c1 = Calendar.getInstance(); c1.set(2009, 6 - 1, 12);
Jenis medan objek kelas Kalendar
Pemalar ini digunakan dalam kelas Kalendar untuk mewakili makna yang berbeza dalam jdk sebenarnya menggunakan idea ini
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Tetapan maklumat objek kelas kalendar
Tetapkan tetapan
Contohnya:
Calendar c1 = Calendar.getInstance();
Panggil:
public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
Gunakan jenis medan Tetapan
Jika anda hanya menetapkan nilai medan tertentu, seperti tarikh, anda boleh menggunakan kaedah set berikut:
public void set(int field,int value)
Tetapkan tarikh yang diwakili oleh objek c1 kepada ke-10, dan semua nilai lain akan Dikira Semula
c1.set(Calendar.DATE,10);
Tetapkan tahun yang diwakili oleh objek c1 kepada 2008, dan semua nilai lain akan dikira semula
c1.set(Calendar.YEAR,2008);
Maksud atribut medan lain set disimpulkan dengan analogi
Tambah tetapan
Calendar c1 = Calendar.getInstance();
Tambah 10 pada tarikh objek c1, iaitu, c1 dinyatakan sebagai tarikh 10 hari kemudian, dan semua nilai lain akan dikira semula
c1.add(Calendar.DATE, 10);
Tolak 10 daripada tarikh objek c1, iaitu, c1 dinyatakan sebagai tarikh 10 hari yang lalu, dan semua nilai lain akan dikira semula
<pre>c1.add(Calendar.DATE, -10);
Maksud tambah untuk atribut medan lain disimpulkan dengan cara yang sama
Pemerolehan maklumat objek kelas Kalendar
Calendar c1 = Calendar.getInstance(); // 获得年份 int year = c1.get(Calendar.YEAR); // 获得月份 int month = c1.get(Calendar.MONTH) + 1; // 获得日期 int date = c1.get(Calendar.DATE); // 获得小时 int hour = c1.get(Calendar.HOUR_OF_DAY); // 获得分钟 int minute = c1.get(Calendar.MINUTE); // 获得秒 int second = c1.get(Calendar.SECOND); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推) int day = c1.get(Calendar.DAY_OF_WEEK);
kelas GregorianCalendar
Kelas Kalendar melaksanakan kalendar Gregorian dan Kalendar Gregorian ialah pelaksanaan khusus bagi kelas Kalendar.
Kaedah getInstance() Kalendar mengembalikan objek GregorianCalendar yang dimulakan secara lalai dengan tempat semasa dan zon waktu. GregorianCalendar mentakrifkan dua medan: AD dan BC. Ini mewakili dua era yang ditakrifkan oleh kalendar Gregorian.
Berikut ialah beberapa kaedah pembinaan objek GregorianCalendar:
序号 | 构造函数和说明 |
1 | GregorianCalendar() 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。 |
2 | GregorianCalendar(int year, int month, int date) 在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar |
3 | GregorianCalendar(int year, int month, int date, int hour, int minute) 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
4 | GregorianCalendar(int year, int month, int date, int hour, int minute, int second) 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
5 | GregorianCalendar(Locale aLocale) 在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。 |
6 | GregorianCalendar(TimeZone zone) 在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。 |
7 | GregorianCalendar(TimeZone zone, Locale aLocale) 在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。 |
Berikut ialah senarai beberapa kaedah berguna yang disediakan oleh kelas GregorianCalendar:
Nombor siri | Kaedah dan arahan |
1 | batal tambah(medan int, jumlah int) Menambah jumlah masa yang ditentukan (ditandatangani) pada medan kalendar yang diberikan mengikut peraturan kalendar. |
2 | dilindungi void computeFields() Tukar nilai milisaat UTC kepada nilai domain masa |
3 | dilindungi void computeTime() Gantikan Kalendar dan tukar nilai domain masa kepada nilai milisaat UTC |
4 | boolean sama(Obj objek) Membandingkan GregorianCalendar ini dengan Objek yang ditentukan. |
5 | int get(int medan) Dapatkan nilai masa medan yang ditentukan |
6 | int getActualMaximum(int medan) Mengembalikan tarikh semasa, nilai maksimum medan yang diberikan |
7 | int getActualMinimum(int medan) Mengembalikan tarikh semasa, nilai minimum medan yang diberikan |
8 | int getGreatestMinimum(int medan) Mengembalikan nilai minimum tertinggi untuk medan kalendar yang diberikan dalam contoh GregorianCalendar ini. |
9 | Tarikh getGregorianChange() Dapatkan tarikh perubahan kalendar Gregorian. |
10 | int getLeastMaximum(int medan) Mengembalikan nilai maksimum terendah untuk medan kalendar yang diberikan dalam contoh GregorianCalendar ini |
11 | int getMaximum(int medan) Mengembalikan nilai maksimum medan kalendar yang diberikan untuk contoh GregorianCalendar ini. |
12 | Tarikh getTime() Dapatkan masa semasa kalendar. |
13 | long getTimeInMillis() Dapatkan masa semasa kalendar dinyatakan sebagai integer panjang |
14 | TimeZone getTimeZone() Dapatkan zon waktu. |
15 | int getMinimum(int medan) Mengembalikan nilai minimum medan yang diberikan. |
& |