Selain ekspresi Lambda, aliran dan beberapa perbaikan kecil, Java 8 juga memperkenalkan serangkaian API waktu dan tanggal baru. Pemrosesan tanggal, kalender, dan waktu Java selalu dikritik, terutama keputusannya untuk mendefinisikan java.util.Date sebagai dapat dimodifikasi dan menerapkan format yang sederhana sebagai non-safe. Tampaknya Java telah menyadari bahwa mereka perlu memberikan dukungan yang lebih baik untuk fungsi waktu dan tanggal, yang juga merupakan hal yang baik untuk komunitas yang digunakan untuk menggunakan perpustakaan waktu dan tanggal Joda. Keuntungan terbesar dari perpustakaan waktu dan tanggal baru ini adalah dengan jelas mendefinisikan beberapa konsep yang terkait dengan waktu dan tanggal, seperti waktu instan (instan), durasi (durasi), tanggal), waktu (waktu), zona waktu (waktu -zone) dan periode waktu (periode). Ini juga mengacu pada beberapa keuntungan dari Perpustakaan Joda, seperti membedakan pemahaman waktu dan tanggal antara manusia dan mesin. Java 8 masih menggunakan sistem kalender ISO, dan tidak seperti pendahulunya, kelas dalam paket java.time tidak dapat diubah dan aman. API Waktu dan Tanggal baru terletak di paket Java.Time.
1.instant-Ini mewakili cap waktu
2. LocalDate-Dating yang tidak termasuk waktu tertentu, seperti 2014-01-14. Ini dapat digunakan untuk menyimpan ulang tahun, ulang tahun, tanggal induksi, dan banyak lagi.
3.localtime - Ini mewakili waktu tanpa tanggal
4.localdateTime-Ini berisi tanggal dan waktu, tetapi masih belum ada informasi offset atau zona waktu.
5.ZonedDateTime - Ini adalah tanggal dan waktu yang lengkap yang berisi zona waktu, dan offset didasarkan pada waktu UTC/Greenwich.
Perpustakaan baru juga menambahkan ZoneOffset dan Zoned, yang dapat memberikan dukungan yang lebih baik untuk zona waktu. Dengan DateTimeformatter baru, penguraian dan pemformatan tanggal juga menjadi baru. Hanya menyebutkan artikel ini, saya menulis artikel ini ketika Java akan meluncurkan fitur baru ini saat ini tahun lalu, jadi Anda akan menemukan bahwa waktu dalam contoh masih dari tahun lalu. Jika Anda menjalankan contoh -contoh ini, nilai -nilai yang mereka kembalikan pasti benar.
Bagaimana java 8 menangani waktu dan tanggal
Seseorang bertanya kepada saya apa cara terbaik untuk mempelajari perpustakaan baru? Jawaban saya adalah, itu adalah menggunakannya dalam proyek aktual. Akan ada berbagai kebutuhan dalam proyek nyata, yang akan mendorong pengembang untuk mengeksplorasi dan meneliti perpustakaan baru ini. Singkatnya, hanya tugas itu sendiri yang benar -benar akan mendorong Anda untuk mengeksplorasi dan belajar. Hal yang sama berlaku untuk API Tanggal dan Waktu baru Java 8. Untuk mempelajari perpustakaan baru Java 8 ini, di sini saya telah membuat 20 contoh berorientasi tugas. Mari kita mulai dengan tugas yang sederhana, seperti cara menggunakan perpustakaan waktu dan tanggal Java 8 untuk mewakili hari ini, dan kemudian menghasilkan tanggal yang lengkap dengan zona waktu dan waktu, dan kemudian mempelajari cara menyelesaikan beberapa tugas yang lebih praktis, seperti mengembangkan Aplikasi pengingat untuk mengetahui berapa hari yang akan ada sebelum tanggal tertentu seperti ulang tahun, ulang tahun Minggu, hari penagihan berikutnya, hari premium berikutnya, atau tanggal kedaluwarsa kartu kredit.
Contoh 1 Cara Mendapatkan Tanggal Hari di Java 8
Ada kelas di Java 8 yang disebut LocalDate, yang dapat digunakan untuk mewakili tanggal hari ini. Kelas ini sedikit berbeda dari java.util.Date karena hanya berisi tanggal dan tidak ada waktu. Jadi, jika Anda hanya perlu mewakili tanggal tanpa memasukkan waktu, Anda dapat menggunakannya.
Salinan kode adalah sebagai berikut:
Localdate hari ini = localdate.now ();
Keluaran
Tanggal lokal hari ini: 2014-01-14
Anda dapat melihat bahwa itu menciptakan tanggal hari ini tanpa informasi waktu. Ini juga memformat tanggal dan kemudian mengeluarkannya.
Contoh 2 Cara Mendapatkan Tahun Saat Ini, Bulan, Hari di Java 8
Kelas LocalDate menyediakan beberapa metode yang nyaman untuk mengekstraksi atribut tahun, bulan, hari dan tanggal lainnya. Menggunakan metode ini, Anda bisa mendapatkan atribut tanggal yang Anda butuhkan, tanpa menggunakan kelas seperti java.util.calendar:
Salinan kode adalah sebagai berikut:
LocalDate hari ini = localdate.now ();
int tahun = hari ini.getYear ();
int month = hari ini.getMonthValue ();
int day = hari ini.getdayofmonth ();
System.out.printf ("Tahun: %D Bulan: %D Hari: %d /t %n", tahun, bulan, hari);
Keluaran
Tanggal lokal hari ini: 2014-01-14
Tahun: 2014 Bulan: 1 Hari: 14
Seperti yang Anda lihat, sangat mudah untuk mendapatkan informasi tahun dan bulan di Java 8. Cukup gunakan metode pengambil yang sesuai, tanpa memori, dan sangat intuitif. Anda dapat membandingkannya dengan metode penulisan lama untuk mendapatkan tahun, bulan dan hari saat ini di Java.
Contoh 3 Cara Mendapatkan Tanggal Khusus Di Java 8
Dalam contoh pertama, kami melihat bahwa sangat mudah untuk menghasilkan tanggal hari melalui metode statis sekarang (), tetapi melalui metode pabrik lain yang sangat berguna localdate.of (), Anda dapat membuat tanggal apa pun, yang menerima parameter Tahun, bulan dan hari, dan kemudian mengembalikan instance lokal yang setara. Ada kabar baik lain tentang metode ini yang tidak membuat kesalahan di API sebelumnya. Apa pun yang Anda tulis tentang tanggal di sini adalah, misalnya, dalam contoh di bawah ini, itu mewakili 14 Januari, dan tidak ada logika tersembunyi.
Salinan kode adalah sebagai berikut:
Localdate dateOfbirth = localdate.of (2010, 01, 14);
System.out.println ("Tanggal lahir Anda adalah:" + DateOfbirth);
Output: Tanggal lahir Anda adalah: 2010-01-14
Dapat dilihat bahwa tanggal penciptaan adalah apa yang kami tulis, 14 Januari 2014.
Contoh 4 Cara memeriksa apakah dua tanggal sama di Java 8
Jika Anda berbicara tentang tugas pemrosesan waktu dan tanggal yang sebenarnya, satu hal yang umum adalah memeriksa apakah kedua tanggal tersebut sama. Anda mungkin sering menemukan pertanyaan tentang apakah hari ini adalah hari yang istimewa, seperti ulang tahun, hari jadi, atau hari libur. Terkadang, Anda akan diberikan tanggal untuk memeriksa apakah itu hari tertentu, misalnya, liburan. Contoh berikut akan membantu Anda menyelesaikan jenis tugas ini di Java 8. Seperti yang mungkin Anda pikirkan, LocalDate mengesampingkan metode yang sama untuk membandingkan tanggal sebagai berikut:
Salinan kode adalah sebagai berikut:
Localdate date1 = localdate.of (2014, 01, 14);
System.out.printf ("Hari ini %s dan tanggal 1 %s adalah tanggal yang sama %n", hari ini, tanggal1);
}
Keluaran
Hari ini 2014-01-14 dan Date1 2014-01-14 adalah tanggal yang sama
Dalam hal ini, dua tanggal yang kami bandingkan adalah sama. Pada saat yang sama, jika Anda mendapatkan string tanggal yang diformat dalam kode, Anda harus menguraikannya ke tanggal sebelum Anda dapat membandingkannya. Anda dapat membandingkan contoh ini dengan cara Java membandingkan tanggal sebelumnya, dan Anda akan menemukan bahwa itu sangat menarik.
Contoh 5 Cara Memeriksa Acara Duplikat di Java 8, Katakanlah Ulang Tahun
Ada tugas praktis lain yang terkait dengan waktu dan tanggal di Java, yaitu untuk memeriksa acara duplikat, seperti hari penagihan bulanan, ulang tahun pernikahan, hari pembayaran bulanan, atau hari ketika Anda membayar premi asuransi setiap tahun. Jika Anda bekerja di perusahaan e-commerce, pasti akan ada modul yang akan mengirimkan harapan ulang tahun kepada pengguna dan mengirimkan salam kepada mereka di setiap liburan penting, seperti Natal, Thanksgiving, dan di India, mungkin itu adalah Deepawali Festival. Bagaimana cara menentukan apakah itu festival atau acara duplikat di Java? Gunakan kelas bulan. Kelas ini terdiri dari bulan dan hari, dan tidak mengandung informasi tahun, yang berarti Anda dapat menggunakannya untuk mewakili beberapa hari yang muncul berulang kali setiap tahun. Tentu saja, ada beberapa kombinasi lain, seperti kelas tahun. Ini juga tidak dapat diubah dan aman-aman seperti kelas lain di perpustakaan waktu dan tanggal yang baru, dan juga merupakan kelas nilai. Mari kita gunakan contoh untuk melihat cara menggunakan bulan bulan untuk memeriksa tanggal duplikat:
Salinan kode adalah sebagai berikut:
Localdate dateOfbirth = localdate.of (2010, 01, 14);
Ulang tahun bulan = bulan hari.of (dateofbirth.getMonth (), dateOfbirth.getdayOfmonth ());
Bulan Currentmonthday = Monthay.dari (hari ini);
if (currentmonthday.equals (ulang tahun)) {
System.out.println ("Banyak banyak pengembalian yang bahagia hari ini !!");
}kalau tidak{
System.out.println ("Maaf, hari ini bukan ulang tahun Anda");
}
Output: Banyak banyak pengembalian yang bahagia hari ini !!
Meskipun tahun -tahun berbeda, hari ini adalah hari ulang tahun, jadi Anda akan melihat ucapan selamat ulang tahun di output. Anda dapat menyesuaikan waktu sistem dan menjalankan program untuk melihat apakah itu mengingatkan Anda saat ulang tahun Anda berikutnya.
Contoh 6 Cara Mendapatkan Waktu Saat Ini Di Java 8
Ini sangat mirip dengan mendapatkan tanggal saat ini dalam contoh pertama. Kali ini kami menggunakan kelas yang disebut LocalTime, yang merupakan waktu tanpa tanggal dan relatif dekat dengan LocalDate. Di sini Anda juga dapat menggunakan metode pabrik statis sekarang () untuk mendapatkan waktu saat ini. Format default adalah HH: mm: ss: nnn, di mana nnn adalah nanoseconds. Anda dapat membandingkannya dengan cara mendapatkan waktu saat ini di Java 8 sebelumnya.
Salinan kode adalah sebagai berikut:
Waktu localtime = localtime.now ();
Keluaran
Waktu setempat sekarang: 16: 33: 33.369 // Dalam jam, menit, detik, nano detik
Seperti yang Anda lihat, waktu saat ini tidak termasuk tanggal, karena LocalTime hanya memiliki waktu dan tidak ada tanggal.
Contoh 7 Cara Meningkatkan Jumlah Jam Dalam Waktu
Sering kali kita perlu menambahkan jam, menit atau detik untuk menghitung waktu mendatang. Java 8 tidak hanya menyediakan kelas yang tidak dapat diubah dan aman, tetapi juga menyediakan beberapa metode yang lebih nyaman seperti plushours () untuk mengganti metode add () asli. Ngomong -ngomong, metode ini mengembalikan referensi ke instance LocalTime baru, karena LocalTime tidak dapat diubah, jangan lupa untuk menyimpan referensi baru ini.
Salinan kode adalah sebagai berikut:
Waktu localtime = localtime.now ();
LocalTime NewTime = Time.Plushours (2);
System.out.println ("Waktu setelah 2 jam:" + newtime);
Keluaran:
Waktu setelah 2 jam: 18: 33: 33.369
Anda dapat melihat bahwa waktu saat ini adalah 16: 33: 33.369 setelah 2 jam. Sekarang Anda dapat membandingkannya dengan cara lama untuk menambahkan atau mengurangi jam di Java. Anda dapat mengetahui metode mana yang lebih baik pada pandangan pertama.
Contoh 8 Cara Mendapatkan Tanggal Setelah 1 Minggu
Ini mirip dengan contoh sebelumnya untuk mendapatkan waktu setelah 2 jam, di sini kita akan belajar bagaimana mendapatkan tanggal setelah 1 minggu. LocalDate digunakan untuk mewakili tanggal tanpa waktu. Karena LocalDate juga dapat diubah, operasi modifikasi apa pun mengembalikan instance baru, jadi jangan lupa untuk menyimpannya.
Salinan kode adalah sebagai berikut:
Localdate nextweek = hari ini.plus (1, chroneunit.weeks);
System.out.println ("Hari ini adalah:" + hari ini);
System.out.println ("Tanggal setelah 1 minggu:" + NextWeek);
Keluaran:
Hari ini adalah: 2014-01-14
Tanggal setelah 1 minggu: 2014-01-21
Anda dapat melihat tanggal apa dalam 7 hari, yaitu, seminggu. Anda dapat menggunakan metode ini untuk menambah satu bulan, tahun, jam, menit, atau bahkan sepuluh tahun, dan memeriksa kelas Chroneunit di Java API untuk mendapatkan lebih banyak opsi.
Contoh 9 tanggal sekitar satu tahun
Ini adalah sekuel dari contoh sebelumnya. Dalam contoh di atas, kami belajar cara menggunakan metode localdate plus () untuk menambahkan tanggal, minggu atau bulan ke tanggal.
Salinan kode adalah sebagai berikut:
LocalDate PrefyYear = Today.minus (1, chroneunit.years);
System.out.println ("Tanggal sebelum 1 tahun:" + Sebelumnya);
Localdate nextyear = hari ini.plus (1, tahun);
System.out.println ("Tanggal setelah 1 tahun:" + NextYear);
Keluaran:
Tanggal Sebelum 1 Tahun: 2013-01-14
Tanggal setelah 1 tahun: 2015-01-14
Dapat dilihat bahwa ada dua tahun sekarang, satu di 2013, yang lain pada tahun 2015, dan tahun -tahun sekitar 2014.
Contoh 10 Menggunakan Jam di Java 8
Java 8 dilengkapi dengan kelas jam, yang dapat Anda gunakan untuk mendapatkan waktu, tanggal atau waktu instan saat ini di zona waktu tertentu. Jam dapat digunakan sebagai pengganti metode.currentTimeInmillis () dan timezone.getDefault ().
Salinan kode adalah sebagai berikut:
// Mengembalikan waktu saat ini berdasarkan jam sistem Anda dan diatur ke UTC.
Jam jam = clock.systemutc ();
System.out.println ("jam:" + jam);
// Mengembalikan waktu berdasarkan pada Sistem Jam Zona DefaultClock =
Clock.systemdefaultzone ();
System.out.println ("jam:" + jam);
Keluaran:
Jam: SystemClock [Z]
Jam: SystemClock [Z]
Anda dapat membandingkan jam ini dengan tanggal yang ditentukan, seperti:
Salinan kode adalah sebagai berikut:
kelas publik myclass {
jam pribadi; // suntikan ketergantungan ...
Public Void Process (LocalDate EventDate) {
if (eventDate.isbefore (localdate.now (clock)) {
...
}
}
}
Ini cukup nyaman jika Anda perlu memproses tanggal di zona waktu yang berbeda.
Contoh 11 Bagaimana menentukan apakah suatu tanggal sebelum atau setelah tanggal lain di Java
Ini juga merupakan tugas umum dalam proyek aktual. Bagaimana Anda memberi tahu apakah suatu tanggal sebelum atau setelah tanggal lain, atau persis sama? Di Java 8, kelas LocalDate memiliki metode isbefore () dan isafter () yang dapat digunakan untuk membandingkan dua tanggal. Jika tanggal panggilan metode lebih awal dari tanggal yang diberikan, metode isBefore () akan mengembalikan true.
Salinan kode adalah sebagai berikut:
LocalDate Tomorrow = LocalDate.of (2014, 1, 15);
System.out.println ("Besok datang setelah hari ini");
}
LocalDate kemarin = hari ini.minus (1, hari);
if (kemarin.isbefore (hari ini)) {
System.out.println ("Kemarin adalah hari sebelum hari ini");
}
Keluaran:
Besok datang setelah hari ini
Kemarin adalah hari sebelum hari ini
Dapat dilihat bahwa tanggal di Java 8 cukup sederhana. Tidak perlu menggunakan kelas lain seperti kalender untuk menyelesaikan tugas serupa.
Contoh 12 Menangani Zona Waktu yang Berbeda di Java 8
Java 8 tidak hanya memisahkan tanggal dan waktu, tetapi juga memiliki zona waktu. Sekarang ada beberapa set kelas terkait zona waktu. Ini setara dengan kelas Gregoriancalendar sebelum Java 8. Menggunakan kelas ini, Anda dapat mengubah waktu setempat menjadi waktu yang sesuai di zona waktu lain, seperti contoh berikut:
Salinan kode adalah sebagai berikut:
// Tanggal dan Waktu dengan TimeZone di Java 8 ZoneID America = ZoneID.of ("America/New_York");
LocalDateTime localtDateandtime = localDatetime.now ();
ZonedDateTime DataandtimeInnewyork = zonedDateTime.of (localtDateandtime, Amerika);
System.out.println ("Tanggal dan waktu saat ini dalam zona waktu tertentu:" + DataandtimeinNewyork);
Keluaran:
Tanggal dan waktu saat ini dalam zona waktu tertentu: 2014-01-14t16: 33: 33.373-05: 00 [Amerika/new_york]
Anda dapat membandingkannya dengan metode sebelumnya untuk mengonversi waktu setempat ke waktu GMT. Ngomong -ngomong, seperti sebelumnya Java 8, jangan membuat teks yang sesuai dengan zona waktu salah, jika tidak, Anda akan menemukan pengecualian seperti itu:
Salinan kode adalah sebagai berikut:
Pengecualian di Thread "Main" java.time.zone.zonerulesexception: ID zona waktu yang tidak diketahui: Asia/Tokyo
di java.time.zone.zonerulesprovider.getProvider (zonerulesprovider.java:272)
di java.time.zone.zonerulesprovider.getrules (zonerulesprovider.java:227)
di java.time.zoneregion.ofid (zoneregion.java:120)
di java.time.zoneid.of (zonaid.java:403)
di java.time.zoneid.of (zonaid.java:351)
Contoh 13 Cara mewakili tanggal tetap, seperti waktu kedaluwarsa kartu kredit
Sama seperti hari bulan mewakili hari yang berulang, Yearmonth adalah kombinasi lain, yang mewakili tanggal seperti tanggal pembayaran kartu kredit, tanggal jatuh tempo setoran tetap, tanggal jatuh tempo opsi. Anda dapat menggunakan kelas ini untuk mengetahui berapa hari di bulan itu.
Salinan kode adalah sebagai berikut:
Yearmonth Currentyearmonth = Yearmonth.Now ();
Yearmonth CreditCardExpiry = Yearmonth.of (2018, bulan. Februari);
System.out.printf ("Kartu kredit Anda berakhir pada %S %n", CreditCardExpiry);
Keluaran:
Hari di bulan bulan 2014-01: 31
Kartu kredit Anda berakhir pada 2018-02
Contoh 14 Cara Memeriksa Tahun Lompatan di Java 8
Ini tidak rumit. Jika Anda masih ingin menciptakan kembali roda, Anda dapat melihat kode ini.
Salinan kode adalah sebagai berikut:
if (today.isleapyear ()) {
System.out.println ("Tahun ini adalah tahun lompatan");
}kalau tidak {
System.out.println ("2014 bukan tahun kabisat");
}
Output: 2014 bukan tahun kabisat
Anda dapat memeriksa beberapa tahun lagi untuk melihat apakah hasilnya benar.
Contoh 15 Berapa hari dan bulan termasuk antara dua tanggal
Tugas umum lainnya adalah menghitung berapa hari, minggu, atau tahun dimasukkan antara dua tanggal yang diberikan. Anda dapat menggunakan kelas java.time.period untuk menyelesaikan fungsi ini. Dalam contoh berikut, kami akan menghitung berapa bulan tanggal saat ini dipisahkan dari tanggal mendatang.
Salinan kode adalah sebagai berikut:
Localdate java8release = localdate.of (2014, month.march, 14);
Periode periodeonxtJavarelease =
Periode. Di antara (hari ini, java8release);
System.out.println ("Bulan tersisa antara hari ini dan rilis Java 8:" + periodtonExtJavarelease.getMonths ());
Keluaran:
Bulan tersisa antara hari ini dan rilis Java 8: 2
Seperti yang Anda lihat, bulan ini adalah Januari, dan tanggal rilis Java 8 adalah Maret, jadi ada 2 bulan di antara mereka.
Contoh 16 Tanggal dan Waktu dengan Offset Zona Waktu
Di Java 8, Anda dapat menggunakan kelas ZoneOffset untuk mewakili zona waktu tertentu, seperti India adalah GMT atau UTC5: 30, dan Anda dapat menggunakan metode Statis Method ZoneOffset.OF () untuk mendapatkan zona waktu yang sesuai. Selama Anda mendapatkan offset ini, Anda dapat menggunakan LocalDateTime dan offset ini untuk membuat offsetDateTime.
Salinan kode adalah sebagai berikut:
LocalDateTime datetime = localDateTime.of (2014, bulan. January, 14, 19, 30);
Offset zoneOffset = zoneOffset.of ("+05:30");
OffsetDateTime Date = offsetDateTime.of (datetime, offset);
System.out.println ("Tanggal dan Waktu dengan TimeZone Offset di Java:" + Date);
Keluaran:
Tanggal dan Waktu dengan TimeZone Offset di Java: 2014-01-14T19: 30+05: 30
Anda dapat melihat bahwa waktu dan tanggal saat ini terkait dengan zona waktu. Poin lain adalah bahwa offsetDateTime terutama untuk dipahami oleh mesin.
Contoh 17 Cara Mendapatkan Timestamp saat ini di Java 8
Jika Anda masih ingat cara mendapatkan stempel waktu saat ini sebelum Java 8, ini adalah sepotong kue sekarang. Kelas instan memiliki metode pabrik statis sekarang () yang dapat mengembalikan cap waktu saat ini, sebagai berikut:
Salinan kode adalah sebagai berikut:
Stempel waktu instan = instant.now ();
System.out.println ("Apa nilai dari instan ini" + timestamp);
Keluaran:
Apa nilai instan 2014-01-14t08: 33: 33.379z ini
Dapat dilihat bahwa cap waktu saat ini berisi tanggal dan waktu, yang sangat mirip dengan java.util.date. Konversi di antara mereka, misalnya, tanggal. Dari (instan) digunakan untuk mengonversi instan menjadi java.util.date, dan date.toinstant () mengonversi tanggal menjadi instan.
Contoh 18 Cara Mengurai/Memformat Tanggal Menggunakan Formatter yang Ditentukan Di Java 8
Sebelum Java 8, pemformatan waktu dan tanggal adalah pekerjaan teknis. Berkat variabel thread-local, ini membuatnya bisa diterapkan di lingkungan multi-threaded, tetapi Java telah mempertahankan negara ini untuk waktu yang lama. Kali ini memperkenalkan tanggal dan formatter waktu yang aman bagi utas baru. Ini juga dilengkapi dengan beberapa format yang telah ditentukan, termasuk format tanggal yang umum digunakan. Misalnya, dalam contoh ini kami menggunakan format BasicIsodate yang telah ditentukan sebelumnya, yang akan memformat 14 Februari 2014 hingga 20140114.
Salinan kode adalah sebagai berikut:
String DayAfterTommorring = "20140116";
LocalDate formated = localdate.parse (DayAfterTommorrow,
Datetimeformatter.basic_iso_date);
System.out.printf ("Tanggal yang dihasilkan dari string %s adalah %s %n", DayAfterTommorring, diformat);
Keluaran:
Tanggal yang dihasilkan dari String 20140116 adalah 2014-01-16
Anda dapat melihat bahwa tanggal yang dihasilkan cocok dengan nilai string yang ditentukan, yang berarti bahwa format tanggal sedikit berbeda.
Contoh 19 Cara Menggunakan Formatter Kustom Untuk Mengurai Tanggal Di Java
Dalam contoh di atas, kami menggunakan formatter waktu bawaan untuk menguraikan string tanggal. Tentu saja, formatter yang telah ditentukan memang baik, tetapi kadang -kadang Anda mungkin masih perlu menggunakan format tanggal khusus. Format tanggal dalam contoh berikut adalah "mmm dd yyyy". Anda dapat meneruskan pola apa pun ke metode statis Pattern () DateTimeformatterter (), yang mengembalikan instance, dengan nilai literal dari pola ini sama seperti pada contoh sebelumnya. Misalnya, M masih mewakili bulan, sementara M masih merupakan segmen. Mode yang tidak valid akan melempar pengecualian datetimeparseexception, tetapi jika itu adalah kesalahan logis, seperti menggunakan M ketika saatnya menggunakan M, tidak ada yang bisa dilakukan.
Salinan kode adalah sebagai berikut:
String goodfriday = "Apr 18 2014";
mencoba {
DateTimeformatter formatter = DateTimeformatter.ofpattern ("mmm dd yyyy");
Localdate holiday = localdate.parse (goodfriday, formatter);
System.out.printf ("Berhasil Parsed String %S, Tanggal adalah %S %n", GoodFriday, Holiday);
} catch (datetimeParseException ex) {
System.out.printf ("%s tidak bisa di parsable!%N", goodfriday);
Ex.PrintStackTrace ();
}
Keluaran:
Berhasil Parsed String 18 Apr 2014, Tanggal 2014-04-18
Anda dapat melihat bahwa nilai tanggal tidak cocok dengan string yang diteruskan, tetapi formatnya berbeda.
Contoh 20 Cara memformat tanggal dan mengubahnya menjadi string di Java 8
Dalam dua contoh sebelumnya, meskipun kami menggunakan kelas DateTimeformatter, kami terutama menguraikan string tanggal. Dalam contoh ini, kita akan melakukan yang sebaliknya. Di sini kami memiliki contoh kelas LocalDateTime, yang ingin kami konversi menjadi string tanggal yang diformat. Sejauh ini, ini adalah cara termudah dan paling nyaman untuk mengubah tanggal menjadi string di Jawa. Contoh berikut akan mengembalikan string yang diformat. Sama seperti contoh sebelumnya adalah bahwa kita masih perlu menggunakan string pola yang ditentukan untuk membuat instance dari kelas DatetImeformatter, tetapi panggilan tersebut bukan metode parse dari kelas LocalDate, tetapi metode format (). Metode ini akan mengembalikan string yang mewakili tanggal saat ini, dan pola yang sesuai didefinisikan dalam instance DateTimef diving.
Salinan kode adalah sebagai berikut:
LocalDateTime kedatangan = localDatetime.now ();
mencoba {
Format datetimeFormatter = datetimeformatter.ofpattern ("mmm dd yyyy hh: mm a");
String Landing = ArrivalDate.Format (format);
System.out.printf ("tiba di: %s %n", landing);
} catch (DateTimeException ex) {
System.out.printf ("%s tidak dapat diformat!%N", tentara);
Ex.PrintStackTrace ();
}
Output: Tiba di: 14 Jan 2014 04:33 PM
Dapat dilihat bahwa waktu saat ini diwakili oleh pola "mmm dd yyyy hh: mm a", yang berisi bulan yang diwakili oleh tiga huruf dan waktu yang diwakili oleh AM dan PM.
Beberapa poin penting dari API Tanggal dan Waktu di Java 8
Setelah membaca contoh -contoh ini, saya yakin Anda memiliki pemahaman tertentu tentang API waktu dan tanggal baru Java 8. Sekarang mari kita tinjau beberapa elemen kunci tentang API baru ini.
1. Ini menyediakan javax.time.zoneid untuk menangani zona waktu.
2. Ini menyediakan kelas lokal dan waktu localtime
3. Semua kelas dalam API Waktu dan Tanggal baru di Java 8 tidak dapat diubah dan aman, yang merupakan kebalikan dari tanggal sebelumnya dan Kalender API, di mana mereka seperti java.util.Date dan SimplEdateFormat. -aman.
4. Poin yang sangat penting dalam API waktu dan tanggal baru adalah bahwa hal itu jelas mendefinisikan konsep dasar waktu dan tanggal, seperti waktu, durasi, tanggal, waktu, zona waktu, dan periode waktu sesaat. Mereka semua didasarkan pada sistem kalender ISO.
5. Setiap pengembang Java harus tahu setidaknya lima kelas ini di API baru ini:
5.1) Instan itu mewakili cap waktu, seperti 2014-01-14T02: 20: 13.592z, yang dapat diperoleh dari kelas java.time.clock, seperti ini: instan arus = clock.system (zonaid.of ("Asia / Tokyo ")). Instant ();
5.2) Lokal itu mewakili tanggal tanpa waktu, seperti 2014-01-14. Ini dapat digunakan untuk menyimpan ulang tahun, ulang tahun, tanggal induksi, dan banyak lagi.
5.3) Localtime itu mewakili waktu tanpa tanggal
5.4) LocalDateTime berisi waktu dan tanggal, tetapi tidak ada offset dengan zona waktu
5.5) ZonedDateTime Ini adalah waktu penuh dengan penyesuaian zona waktu berdasarkan waktu UTC/Greenwich
1. Paket utama perpustakaan ini adalah Java.Time, yang berisi kelas yang mewakili tanggal, waktu, instan dan durasi. Ini memiliki dua subpackage, satu adalah java.time.foramt, yang jelas untuk apa ini digunakan, dan yang lainnya adalah java.time.temporal, yang dapat mengakses berbagai bidang dari level yang lebih rendah.
2. Zona waktu mengacu pada wilayah di bumi yang memiliki waktu standar yang sama. Setiap zona waktu memiliki pengidentifikasi yang unik, dan ada juga format wilayah/kota (Asia/Tokyo) dan waktu offset mulai dari waktu Greenwich. Misalnya, waktu offset di Tokyo adalah +09: 00.
3.OffsetDateTime Kelas sebenarnya berisi localDatetime dan zoneOffset. Ini digunakan untuk mewakili tanggal lengkap (tahun, bulan, hari) dan waktu (jam, menit, nanosecond) yang berisi offset waktu Greenwich (+/- jam: menit, misalnya +06: 00 atau -08: 00).
4. Kelas DatetImeformatter digunakan untuk memformat dan menguraikan tanggal di Java. Tidak seperti SimpledateFormat, ini tidak dapat diubah dan aman, dan dapat ditugaskan ke variabel statis jika diperlukan. Kelas DateTimEformatter menyediakan banyak format yang telah ditentukan, dan Anda juga dapat menyesuaikan format yang Anda inginkan. Tentu saja, menurut konvensi, ia juga memiliki metode parse () yang digunakan untuk mengonversi string ke tanggal, dan jika ada kesalahan selama konversi, itu akan melempar pengecualian DateTimeparseeException. Demikian pula, kelas DateFormatter juga memiliki metode format () untuk memformat tanggal.
5. Dengan kata lain, dua format tanggal "mmm d yyyy" dan "mmm dd yyyy" juga sedikit berbeda. The One Who Come in "Jan 2 2014" akan melaporkan kesalahan karena mengharapkan dua karakter datang dari bulan. Untuk mengatasi masalah ini, jika hari itu adalah satu digit, Anda harus membuat 0 di depan, misalnya, "2 Jan 2014" harus diubah menjadi "Jan 02 2014".
Itu semua tentang Java 8, API waktu dan tanggal yang baru. Contoh -contoh singkat ini sudah cukup untuk memahami beberapa kelas baru di API baru ini. Karena dijelaskan berdasarkan tugas yang sebenarnya, ketika Anda menemukan pekerjaan di Java yang perlu memproses waktu dan tanggal, Anda tidak perlu mencari -cari lagi. Kami belajar cara membuat dan memodifikasi instance tanggal. Kami juga belajar tentang perbedaan antara tanggal murni, tanggal plus waktu, tanggal plus zona waktu, tahu cara membandingkan dua tanggal, dan bagaimana menemukan hari tertentu dengan tanggal yang ditentukan, seperti ulang tahun, ulang tahun, atau tanggal asuransi berikutnya. Kami juga belajar cara mengurai dan memformat tanggal di Java 8 dengan cara yang aman-aman tanpa menggunakan variabel thread-lokal atau perpustakaan pihak ketiga. API baru kompeten untuk tugas terkait kapan saja dan tanggal.