Dengan aplikasi luas bahasa Java, pemprosesan masa dan tarikh telah menjadi aspek yang tidak boleh diabaikan dalam pembangunan API. Pemprosesan masa dan tarikh melibatkan banyak isu yang kompleks, seperti zon waktu, masa penjimatan siang, dsb., jadi Java menyediakan satu siri kelas masa dan tarikh untuk memudahkan pengendalian isu ini.
1. Kelas masa dalam Java
Java menyediakan tiga kelas tarikh dan masa: java.util.Date, java.sql.Date dan kelas dalam pakej java.time.
Kelas java.util.Date ialah kelas pemprosesan tarikh dan masa asal Java Kelas ini mempunyai beberapa masalah, seperti sebagai zon waktu dan isu pengendalian masa penjimatan siang, jadi kelas ini sudah usang. Walaupun ia masih boleh digunakan, sangat disyorkan untuk menggunakan kelas dalam pakej java.time untuk pemprosesan tarikh dan masa.
kelas java.sql.Date ialah subkelas java.util.Date, tetapi ia hanya mewakili bahagian tarikh tarikh Maklumat tersebut sudah lapuk dan tidak disyorkan untuk digunakan. Dalam JDBC, kelas java.sql.Date digunakan secara meluas dan merupakan jenis biasa untuk memproses maklumat tarikh dalam pangkalan data.
Java 8 memperkenalkan pakej java.time, yang menyediakan satu siri kelas untuk mengendalikan tarikh dan masa. Kelas yang disediakan oleh pakej ini sangat mudah dibaca, tidak berubah dan selamat untuk benang, dan memberikan sokongan yang baik untuk pemprosesan pelbagai format masa dan tarikh. Beberapa kelas yang biasa digunakan dalam pakej ini adalah seperti berikut:
(1) LocalDate
Kelas LocalDate hanya mewakili maklumat tarikh dan tidak termasuk maklumat masa dan maklumat zon waktu. Kelas ini boleh digunakan untuk memproses tarikh dengan mudah, seperti mengira bilangan hari, bulan, tahun, dsb. antara dua tarikh. Berikut ialah contoh kod kelas ini:
// 获取当前日期 LocalDate today = LocalDate.now(); // 获取指定日期 LocalDate date = LocalDate.parse("2020-07-20"); // 计算两个日期之间的天数 long days = ChronoUnit.DAYS.between(today, date);
(2) LocalTime
Kelas LocalTime mewakili maklumat masa, tanpa maklumat tarikh dan maklumat zon waktu. Kelas ini biasanya digunakan untuk memproses masa dalam sehari, seperti mendapatkan masa semasa, mengira tempoh masa antara dua masa, dsb. Berikut ialah contoh kod untuk kelas ini:
// 获取当前时间 LocalTime now = LocalTime.now(); // 获取指定时间 LocalTime time = LocalTime.parse("15:30"); // 计算两个时间之间的差值 Duration duration = Duration.between(now, time); long diff = duration.getSeconds();
(3) LocalDateTime
Kelas LocalDateTime mengandungi maklumat tarikh dan masa, tetapi tiada maklumat zon waktu. Kelas ini boleh digunakan untuk memproses gabungan maklumat tarikh dan masa, seperti mendapatkan tarikh dan masa semasa, tarikh dan masa penggabungan, dsb. Berikut ialah contoh kod untuk kelas ini:
// 获取当前日期时间 LocalDateTime now = LocalDateTime.now(); // 获取指定日期时间 LocalDateTime dateTime = LocalDateTime.parse("2020-07-20T15:30:00"); // 将日期和时间合并 LocalDate date = LocalDate.parse("2020-07-20"); LocalTime time = LocalTime.parse("15:30"); LocalDateTime dateTime2 = LocalDateTime.of(date, time);
(4) ZonedDateTime
Kelas ZonedDateTime mengandungi maklumat tarikh, masa dan zon waktu. Kelas ini boleh digunakan untuk mengendalikan maklumat tarikh dan masa merentas zon waktu. Berikut ialah contoh kod kelas ini:
// 获取当前日期时间和时区 ZonedDateTime now = ZonedDateTime.now(); // 获取指定时区的日期时间 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZonedDateTime dateTime = ZonedDateTime.of(LocalDateTime.now(), zoneId);
2 Pemformatan masa dan tarikh
Di Java, pemformatan tarikh dan masa terutamanya menggunakan kelas DateTimeFormatter dalam java.time.format. pakej . Kelas ini menyediakan pelbagai pilihan pemformatan yang boleh digunakan untuk memformat maklumat tarikh dan masa. Berikut ialah contoh kod kelas ini:
// 格式化日期 LocalDate date = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = date.format(formatter); // 格式化时间 LocalTime time = LocalTime.now(); formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); String formattedTime = time.format(formatter); // 格式化日期时间 LocalDateTime dateTime = LocalDateTime.now(); formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = dateTime.format(formatter);
3 Pemprosesan zon waktu
Dalam pakej java.time, pemprosesan zon masa menggunakan kelas java.time.ZoneId. Kelas ini menyediakan satu siri kaedah statik untuk mendapatkan senarai zon waktu yang disokong oleh sistem, dan menyediakan beberapa kaedah penukaran dan mendapatkan dan menetapkan maklumat zon waktu. Berikut ialah contoh kod untuk kelas ini:
// 获取系统支持的时区列表 Set<String> zoneIds = ZoneId.getAvailableZoneIds(); // 将日期时间从一个时区转换为另一个时区 ZonedDateTime dateTime = ZonedDateTime.parse("2020-07-20T15:30:00+0800[Asia/Shanghai]"); ZoneId zoneId = ZoneId.of("America/New_York"); ZonedDateTime dateTimeInNewYork = dateTime.withZoneSameInstant(zoneId);
4. Pemprosesan Masa Penjimatan Siang
Waktu penjimatan siang biasanya menyebabkan perubahan masa, jadi perhatian khusus perlu diberikan apabila berurusan dengan masa penjimatan siang . Di Jawa, pemprosesan masa penjimatan siang biasanya diwakili oleh kelas ZoneRules. Kelas ini menyediakan kaedah untuk mendapatkan peraturan masa penjimatan siang dan mengira masa penjimatan siang, yang boleh memudahkan pemprosesan masa penjimatan siang. Berikut ialah kod sampel kelas ini:
// 获取当前时区的夏令时规则 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZoneRules rules = zoneId.getRules(); // 判断指定的时间是否是夏令时 LocalDateTime dateTime = LocalDateTime.now(); boolean isDst = rules.isDaylightSavings(dateTime.toInstant(zoneId.getRules().getOffset(dateTime)));
Ringkasan
Dalam pembangunan API Java, pemprosesan masa dan tarikh adalah bahagian yang sangat penting. Menggunakan kelas masa dan tarikh yang disediakan oleh Java boleh mengendalikan pelbagai isu masa dan tarikh yang kompleks, seperti zon waktu, masa penjimatan siang, dsb. Apabila menggunakan kelas masa dan tarikh, anda harus memberi perhatian untuk menggunakan kelas dalam pakej java.time yang diperkenalkan dalam Java 8 untuk pemprosesan untuk mencapai hasil yang lebih baik.
Atas ialah kandungan terperinci Pemprosesan masa dan tarikh dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!