java
Dengan Java 8, API Tanggal-Waktu baru diperkenalkan untuk menutupi kelemahan API tanggal-waktu lama berikut.
Tidak aman untuk utas java.util.Date tidak thread aman, sehingga pengembang harus berurusan dengan masalah konkurensi saat menggunakan tanggal. API tanggal-waktu yang baru tidak dapat diubah dan tidak memiliki metode penyetel.
Desain buruk Tanggal Default dimulai dari 1900, bulan dimulai dari 1, dan hari dimulai dari 0, jadi tidak ada keseragaman. API lama memiliki lebih sedikit metode langsung untuk operasi tanggal. API baru menyediakan banyak metode utilitas untuk operasi semacam itu.
Penanganan zona waktu yang sulit Pengembang harus menulis banyak kode untuk menangani masalah zona waktu. API baru telah dikembangkan dengan mempertimbangkan desain khusus domain.
Java 8 memperkenalkan API tanggal-waktu baru di bawah paket java.time. Berikut adalah beberapa kelas penting yang diperkenalkan dalam paket java.time.
Lokal API tanggal-waktu yang disederhanakan tanpa kerumitan penanganan zona waktu.
Dikategorikan API tanggal-waktu khusus untuk menangani berbagai zona waktu.
Kelas LocalDate/LocalTime dan LocalDateTime menyederhanakan pengembangan di mana zona waktu tidak diperlukan. Mari kita lihat mereka beraksi.
Buat program java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.Month; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testLocalDateTime(); } public void testLocalDateTime() { // Get the current date and time LocalDateTime currentTime = LocalDateTime.now(); System.out.println("Current DateTime: " + currentTime); LocalDate date1 = currentTime.toLocalDate(); System.out.println("date1: " + date1); Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond(); System.out.println("Month: " + month +"day: " + day +"seconds: " + seconds); LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012); System.out.println("date2: " + date2); //12 december 2014 LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12); System.out.println("date3: " + date3); //22 hour 15 minutes LocalTime date4 = LocalTime.of(22, 15); System.out.println("date4: " + date4); //parse a string LocalTime date5 = LocalTime.parse("20:15:30"); System.out.println("date5: " + date5); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Ini harus menghasilkan output berikut
Current DateTime: 2014-12-09T11:00:45.457 date1: 2014-12-09 Month: DECEMBERday: 9seconds: 45 date2: 2012-12-10T11:00:45.457 date3: 2014-12-12 date4: 22:15 date5: 20:15:30
API tanggal-waktu yang dikategorikan akan digunakan ketika zona waktu dipertimbangkan. Mari kita lihat mereka beraksi.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
import java.time.ZonedDateTime; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testZonedDateTime(); } public void testZonedDateTime() { // Get the current date and time ZonedDateTime date1 = ZonedDateTime.parse("2007-12-03T10:15:30+05:30[Asia/Karachi]"); System.out.println("date1: " + date1); ZoneId id = ZoneId.of("Europe/Paris"); System.out.println("ZoneId: " + id); ZoneId currentZone = ZoneId.systemDefault(); System.out.println("CurrentZone: " + currentZone); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Ini harus menghasilkan output berikut
date1: 2007-12-03T10:15:30+05:00[Asia/Karachi] ZoneId: Europe/Paris CurrentZone: Etc/UTC
java.time.temporal.ChronoUnit enum ditambahkan di Java 8 untuk menggantikan nilai integer yang digunakan di API lama untuk mewakili hari, bulan, dll. Mari kita lihat mereka beraksi.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testChromoUnits(); } public void testChromoUnits() { //Get the current date LocalDate today = LocalDate.now(); System.out.println("Current date: " + today); //add 1 week to the current date LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS); System.out.println("Next week: " + nextWeek); //add 1 month to the current date LocalDate nextMonth = today.plus(1, ChronoUnit.MONTHS); System.out.println("Next month: " + nextMonth); //add 1 year to the current date LocalDate nextYear = today.plus(1, ChronoUnit.YEARS); System.out.println("Next year: " + nextYear); //add 10 years to the current date LocalDate nextDecade = today.plus(1, ChronoUnit.DECADES); System.out.println("Date after ten year: " + nextDecade); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Seharusnya menghasilkan hasil berikut
Current date: 2014-12-10 Next week: 2014-12-17 Next month: 2015-01-10 Next year: 2015-12-10 Date after ten year: 2024-12-10
Dengan Java 8, dua kelas khusus diperkenalkan untuk menangani perbedaan waktu.
Periode Ini berkaitan dengan jumlah waktu berdasarkan tanggal.
Durasi Ini berkaitan dengan jumlah waktu berdasarkan waktu.
Mari kita lihat mereka beraksi.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
import java.time.temporal.ChronoUnit; import java.time.LocalDate; import java.time.LocalTime; import java.time.Duration; import java.time.Period; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testPeriod(); java8tester.testDuration(); } public void testPeriod() { //Get the current date LocalDate date1 = LocalDate.now(); System.out.println("Current date: " + date1); //add 1 month to the current date LocalDate date2 = date1.plus(1, ChronoUnit.MONTHS); System.out.println("Next month: " + date2); Period period = Period.between(date2, date1); System.out.println("Period: " + period); } public void testDuration() { LocalTime time1 = LocalTime.now(); Duration twoHours = Duration.ofHours(2); LocalTime time2 = time1.plus(twoHours); Duration duration = Duration.between(time1, time2); System.out.println("Duration: " + duration); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Ini harus menghasilkan output berikut
Current date: 2014-12-10 Next month: 2015-01-10 Period: P-1M Duration: PT2H
TemporalAdjuster digunakan untuk melakukan matematika tanggal. Misalnya, dapatkan "Sabtu Kedua Bulan Ini" atau "Selasa Berikutnya". Mari kita lihat mereka beraksi.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.time.DayOfWeek; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testAdjusters(); } public void testAdjusters() { //Get the current date LocalDate date1 = LocalDate.now(); System.out.println("Current date: " + date1); //get the next tuesday LocalDate nextTuesday = date1.with(TemporalAdjusters.next(DayOfWeek.TUESDAY)); System.out.println("Next Tuesday on : " + nextTuesday); //get the second saturday of next month LocalDate firstInYear = LocalDate.of(date1.getYear(),date1.getMonth(), 1); LocalDate secondSaturday = firstInYear.with(TemporalAdjusters.nextOrSame( DayOfWeek.SATURDAY)).with(TemporalAdjusters.next(DayOfWeek.SATURDAY)); System.out.println("Second Saturday on : " + secondSaturday); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Seharusnya menghasilkan hasil berikut
Current date: 2014-12-10 Next Tuesday on : 2014-12-16 Second Saturday on : 2014-12-13
Metode toInstant() ditambahkan ke objek Tanggal dan Kalender asli, yang dapat digunakan untuk mengonversinya ke API Tanggal-Waktu yang baru. Gunakan metode ofInstant(Insant,ZoneId) untuk mendapatkan objek LocalDateTime atau ZonedDateTime. Mari kita lihat mereka beraksi.
Buat program Java berikut menggunakan editor pilihan Anda, misalnya, C:\> JAVA.
import java.time.LocalDateTime; import java.time.ZonedDateTime; import java.util.Date; import java.time.Instant; import java.time.ZoneId; public class Java8Tester { public static void main(String args[]) { Java8Tester java8tester = new Java8Tester(); java8tester.testBackwardCompatability(); } public void testBackwardCompatability() { //Get the current date Date currentDate = new Date(); System.out.println("Current date: " + currentDate); //Get the instant of current date in terms of milliseconds Instant now = currentDate.toInstant(); ZoneId currentZone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(now, currentZone); System.out.println("Local date: " + localDateTime); ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, currentZone); System.out.println("Zoned date: " + zonedDateTime); } }
Kompilasi kelas menggunakan javac kompiler sebagai berikut
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut
C:\JAVA>java Java8Tester
Ini harus menghasilkan output berikut
Current date: Wed Dec 10 05:44:06 UTC 2014 Local date: 2014-12-10T05:44:06.635 Zoned date: 2014-12-10T05:44:06.635Z[Etc/UTC]
java
Komponen dan persediaan JLCPCB PCB yang Disesuaikan × 1 Arduino Nano 33 IoT × 1 Raspberry Pi 3 Model B Raspberry Pi 3 atau Raspberry Pi 4 × 1 Raspberry Pi 4 Model B Raspberry Pi 3 atau Raspberry Pi 4 × 1 Layar SparkFun Nokia 5110 × 1 Pemutar MP3
Komponen dan persediaan Arduino UNO × 1 Sensor Suhu &Kelembaban DHT11 (4 pin) × 1 Maxim Integrated DS3231 × 1 Resistor 10k ohm × 1 Tampilan grafis OLED 128x64 Adafruit × 1 Breadboard (generik) × 1 Kabel jumper (generik) × 15
Komponen dan persediaan Arduino UNO × 1 Adafruit LCD Standar - 16x2 Putih di Atas Biru × 1 Modul I2C untuk LCD × 1 Jam Waktu Nyata (RTC) × 1 Sakelar Tombol Tekan SparkFun 12mm × 3 Resistor 10k ohm × 3 Kabel jumper (generik) ×
Bukan rahasia lagi bahwa sektor manufaktur sedang dalam keadaan fluktuatif. Dengan berbagai perubahan global dan lokal baru-baru ini – pandemi Covid, perang lokal, masalah rantai pasokan, dll – banyak produsen berjuang untuk mengikuti lanskap bisnis yang berubah dengan cepat. Pertanyaan yang diajuk