1. Date
kelas dan masa Unix
Sejak awal Java, bahasa ini mempunyai kelas khas untuk bekerja dengan masa dan tarikh — Date
. Dari masa ke masa, beberapa lagi kelas untuk bekerja dengan tarikh muncul, tetapi pengaturcara terus menggunakan Date
kelas itu sehingga hari ini.
Ini kerana ia sangat mudah dan selesa. Dan sebagai pengaturcara, anda pasti akan menemuinya dalam mana-mana projek sebenar. Sama ada mahu menggunakannya atau tidak adalah pilihan anda, tetapi anda mesti mengetahuinya. Jadi berikan beberapa minit masa berharga anda.
Apa yang membuatkan Date
kelas itu begitu baik? Kesederhanaannya.
Kelas Date
menyimpan maklumat tarikh dan masa sebagai bilangan milisaat yang telah berlalu sejak 1 Januari 1970. Itu adalah banyak milisaat, jadi long
jenis itu digunakan untuk menyimpannya.
Mengapa sejak 1970 khususnya? Inilah yang dipanggil masa Unix : ia adalah bagaimana sistem pengendalian Unix, yang merupakan datuk kepada semua sistem pengendalian moden, mengekalkan masa.
Tetapi anda boleh mengetahui dengan mudah berapa banyak masa telah berlalu antara dua tarikh: hanya tolak satu tarikh daripada tarikh yang lain, dan anda mendapat perbezaan masa antara tarikh kepada milisaat terdekat.
Berikut ialah beberapa contoh berguna untuk bekerja dengan Date
kelas.
2. Mendapat tarikh semasa
Untuk mendapatkan masa dan tarikh semasa, hanya buat Date
objek. Setiap objek baharu menyimpan masa apabila ia dicipta. Ia kelihatan sangat mudah:
Date current = new Date();
Selepas melaksanakan arahan ini, current
pembolehubah akan menyimpan rujukan kepada Date
objek yang dicipta, yang akan menyimpan secara dalaman masa penciptaannya — bilangan milisaat yang telah berlalu sejak 1 Januari 1970.
Memaparkan tarikh semasa pada skrin
Untuk memaparkan tarikh semasa, hanya: a) cipta Date
objek baharu, b) cetak ke skrin menggunakan System.out.println()
kaedah.
Contoh:
Kod | Output konsol |
---|---|
|
|
Inilah maksud output konsol:
Teks | Tafsiran |
---|---|
Khamis rsday | Khamis |
21 Februari | 21 Februari |
14:01:34 | jam : minit : saat |
EET | Zon waktu: Waktu Eropah Timur |
2019 | tahun |
3. Menetapkan tarikh tertentu
Kami memikirkan cara untuk mendapatkan masa semasa, tetapi bagaimanakah kami membuat Date
objek yang menyimpan tarikh atau masa yang berbeza?
Sekali lagi, semuanya mudah di sini. Untuk menetapkan tarikh tertentu, anda perlu menulis kod seperti ini:
Date birthday = new Date(year, month, day);
Segala-galanya mudah dan jelas, tetapi terdapat dua nuansa yang perlu diperhatikan:
- Tahun mesti dikira dari 1900.
- Bulan dinomborkan dari sifar.
Ini adalah satu lagi warisan sistem pengendalian Unix: pada Unix, pengaturcara menandakan tahun menggunakan dua digit. Daripada 1977, mereka hanya menulis 77. Jadi 77 adalah tahun yang betul jika kita mengira dari 1900.
Sebagai contoh, saya dilahirkan pada 21 Mac 1989. Mac adalah bulan ketiga, jadi saya perlu menulis:
Kod | Output konsol |
---|---|
|
|
Bulan dinomborkan dari sifar, tetapi hari tidak Itu agak pelik, bukan?
Kami fikir pengaturcara yang benar sepatutnya telah menang dan menomborkan hari dalam bulan dari sifar juga. Oh, konformis ini 🙂
Menetapkan masa tertentu
Menetapkan masa tertentu juga agak mudah: untuk ini, anda perlu menulis kenyataan seperti ini:
Date birthday = new Date(year, month, day, hour, minutes, seconds);
Jam, minit dan saat dinomborkan dari sifar: biarkan pengaturcara di dalam diri anda menarik nafas lega.
Contoh:
Kod | Output konsol |
---|---|
|
|
Kami menetapkan masa 12:15 dan tarikh 4 Jun 2005 . Ini agak sukar untuk dibaca oleh bukan pengaturcara, tetapi ia berfungsi sebagaimana mestinya.
4. Bekerja dengan unsur tarikh
Anda boleh melakukan lebih banyak dengan Date
objek daripada sekadar memaparkannya. Ia mempunyai kaedah yang membolehkan anda mendapatkan elemen individu tarikh yang disimpan secara dalaman:
Kaedah | Penerangan |
---|---|
|
Mengembalikan tahun tarikh berbanding 1900. |
|
Mengembalikan bulan tarikh (bulan dinomborkan dari sifar) |
|
Mengembalikan hari dalam bulan |
|
Mengembalikan hari dalam seminggu |
|
Mengembalikan jam |
|
Mengembalikan minit |
|
Mengembalikan detik |
Contoh:
Kod | Output konsol | Catatan |
---|---|---|
|
|
2005 Jun hari bulan Sabtu |
Ngomong-ngomong, Date
objek bukan sahaja membenarkan anda mendapatkan elemen individu tarikh, tetapi juga mengubahnya:
Kaedah | Penerangan |
---|---|
void setYear(int year) |
Menukar tahun tarikh. Tahun ini ditunjukkan relatif kepada 1900. |
void setMonth(int month) |
Menukar bulan tarikh (bulan dinomborkan daripada sifar) |
void setDate(int date) |
Mengubah hari dalam bulan |
void setHours(int hours) |
Tukar jam |
void setMinutes(int minutes) |
Menukar minit |
void setSeconds(int seconds) |
Berubah saat |
5. milisaat
Seperti yang kami katakan sebelum ini, Date
objek menyimpan bilangan milisaat yang telah berlalu sejak 1 Januari 1970.
Jika kita memerlukan nombor itu, kita boleh mendapatkannya daripada Date
objek:
long time = date.getTime();
Kaedah ini getTime()
mengembalikan bilangan milisaat yang disimpan di dalam Date
objek.
Anda bukan sahaja boleh mendapatkan bilangan milisaat, tetapi anda juga boleh menukar nombor itu dalam objek sedia ada:
Date date = new Date();
date.setTime(1117876500000L);
Dengan cara ini, anda boleh menulis ini dengan lebih ringkas dengan meluangkan masa ke Date
objek tepat apabila ia dibuat:
Date date = new Date(1117876500000L);
6. Membandingkan tarikh
Jika anda ingin membandingkan dua tarikh dan mengetahui yang mana satu datang dahulu, anda mempunyai tiga pilihan
Cara pertama ialah dengan hanya membandingkan bilangan milisaat yang mereka simpan setiap satu:
if (date1.getTime() < date2.getTime())
Cara kedua ialah menggunakan before()
kaedah objek Date
:
if (date1.before(date2))
Ia berbunyi seperti ini: jika date1
datang sebelum date2
, maka...
Cara ketiga ialah menggunakan after()
kaedah objek Date
:
if (date2.after(date1))
Ia berbunyi seperti ini: jika date2
selepas date1
, maka...
7. DateFormat
kelas
Ingat, apabila kami memaparkan tarikh pada skrin, kami melihat sesuatu seperti ini: Thu Feb 21 14:01:34 EET 2019
. Semuanya kelihatan betul, tetapi formatnya lebih kepada bagaimana tarikh akan dipaparkan untuk pengaturcara dan bukannya manusia biasa. Kami mahu memaparkan tarikh dengan lebih jelas untuk pengguna. Sesuatu seperti Tuesday, February 21
.
Dan tanpa tahun. Atau dengan setahun, jika perlu. Secara umum, kami mahu dapat memaparkan tarikh dengan cara yang berbeza.
Ada kelas khas untuk ini: SimpleDateFormat
.
Contoh:
Kod |
---|
|
Output konsol |
|
Lihat apa yang dipaparkan oleh program: Jun-04-2005
. Itu sama sekali tidak seperti dulu.
Perbezaannya ialah kami tidak memaparkan Date
objek itu sendiri, tetapi rentetan khas yang diperoleh dengan memanggil format()
kaedah pada SimpleDateFormat
objek. Tetapi itu bukan perkara utama di sini.
Apabila SimpleDateFormat
objek dicipta, kami lulus dalam rentetan "MMM-dd-YYYY"
sebagai parameter. Rentetan inilah yang menyampaikan format tarikh yang akhirnya kami lihat dalam output konsol.
- MMM menunjukkan untuk memaparkan nama bulan, dipendekkan menggunakan tiga huruf
- dd menunjukkan untuk memaparkan hari dalam sebulan
- YYYY menunjukkan untuk memaparkan tahun menggunakan empat digit
Jika kita ingin mengeluarkan bulan sebagai nombor, maka bukannya MMM
, kita perlu menulis MM
, yang menghasilkan corak "MM-dd-YYYY"
. Output skrin akan menjadi06-04-2005
Kami akan membincangkan kelas ini dengan lebih terperinci kemudian.
8. Date.parse
kaedah
Kelas Date
boleh melakukan sesuatu yang menarik dan berguna — ia boleh mendapatkan tarikh daripada rentetan. Atau, seperti yang dikatakan pengaturcara, ia boleh menghuraikan rentetan.
Ia mempunyai kaedah khas parse()
untuk ini. Penghuraian kelihatan seperti ini:
Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );
Dengan cara ini, kod ini boleh ditulis dengan lebih padat:
Date date = new Date("Jul 06 12:15:00 2019");
Kami akan mempertimbangkan penghuraian rentetan dengan lebih terperinci dalam pelajaran lain.
GO TO FULL VERSION