Gunakan kelas DateTimeFormatter dan antara muka TemporalAccessor dalam Java 11 untuk menghuraikan dan memformat tarikh dan masa
Memandangkan masa dan tarikh digunakan secara meluas dalam aplikasi moden, pengendalian tarikh dan masa dengan tepat dan mudah menjadi semakin penting. Untuk memenuhi keperluan ini, Java 11 memperkenalkan kelas DateTimeFormatter baharu dan antara muka TemporalAccessor, menjadikan penghuraian dan pemformatan tarikh dan masa lebih fleksibel dan lebih mudah.
KelasDateTimeFormatter ialah alat yang berkuasa untuk memformat dan menghuraikan tarikh dan masa. Ia menyediakan satu set format yang dipratentukan dan juga membenarkan pembangun menyesuaikan format. Pada masa yang sama, DateTimeFormatter juga menyokong penyetempatan dan pemprosesan zon waktu untuk memenuhi format tarikh dan masa di kawasan dan keperluan yang berbeza. Berikut ialah beberapa contoh DateTimeFormatters biasa:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateTimeFormatterExample { public static void main(String[] args) { LocalDateTime dateTime = LocalDateTime.now(); // 格式化为字符串 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = dateTime.format(formatter); System.out.println("Formatted Date and Time: " + formattedDateTime); // 解析字符串为日期和时间 String dateTimeString = "2022-01-01 12:00:00"; LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter); System.out.println("Parsed Date and Time: " + parsedDateTime); } }
Dalam contoh di atas, kami mula-mula mencipta objek DateTimeFormatter untuk menentukan format tarikh dan masa. Semasa proses pemformatan, kami menggunakan mod format yyyy-MM-dd HH:mm:ss
untuk memformat tarikh dan masa semasa ke dalam rentetan. Kami kemudian menggunakan kaedah format()
LocalDateTime
untuk memformat objek tarikh dan masa ke dalam rentetan dan mencetaknya. yyyy-MM-dd HH:mm:ss
的格式模式,将当前的日期和时间格式化为字符串。然后,我们使用LocalDateTime
的format()
方法,将日期和时间对象格式化为字符串,并将其打印出来。
另外,我们还可以通过DateTimeFormatter
的parse()
方法,将字符串解析为日期和时间对象。在这个示例中,我们使用相同的格式模式,将一个日期和时间字符串解析为LocalDateTime
对象,并将其打印出来。
除了使用预定义的格式模式外,我们还可以使用DateTimeFormatter
的其他方法来实现更加细粒度的日期和时间格式化。例如,我们可以使用DateTimeFormatterBuilder
类来构建自定义的格式:
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; public class CustomDateTimeFormatterExample { public static void main(String[] args) { LocalDate date = LocalDate.now(); DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendLiteral("Today is ") .appendValue(DateTimeFormatter.ISO_LOCAL_DATE) .appendLiteral(".") .toFormatter(); String formattedDate = date.format(formatter); System.out.println(formattedDate); } }
在上面的示例中,我们使用DateTimeFormatterBuilder
类来创建一个自定义的日期格式化器。在这个格式化器中,我们首先使用appendLiteral()
方法添加了一个字面量字符串"Today is ",然后使用appendValue()
方法添加了日期,最后再添加了一个字面量字符串"。"。通过使用这些方法,我们可以构建出符合自己需求的日期格式。
除了DateTimeFormatter类外,Java 11还引入了TemporalAccessor接口,该接口可以用作日期和时间对象的通用访问器。它提供了一组通用的方法,可以通过具体的实现类如LocalDateTime、LocalDate等来访问日期和时间对象的各个部分。以下是TemporalAccessor的一些示例用法:
import java.time.LocalDateTime; import java.time.temporal.ChronoField; public class TemporalAccessorExample { public static void main(String[] args) { LocalDateTime dateTime = LocalDateTime.now(); int year = dateTime.get(ChronoField.YEAR); int month = dateTime.get(ChronoField.MONTH_OF_YEAR); int day = dateTime.get(ChronoField.DAY_OF_MONTH); int hour = dateTime.get(ChronoField.HOUR_OF_DAY); int minute = dateTime.get(ChronoField.MINUTE_OF_HOUR); int second = dateTime.get(ChronoField.SECOND_OF_MINUTE); System.out.println("Current Date: " + year + "-" + month + "-" + day); System.out.println("Current Time: " + hour + ":" + minute + ":" + second); } }
在上面的示例中,我们使用LocalDateTime
类创建了一个当前的日期和时间对象。然后,我们使用get()
方法和ChronoField
parse()
DateTimeFormatter
. Dalam contoh ini, kami menggunakan corak pemformatan yang sama untuk menghuraikan rentetan tarikh dan masa ke dalam objek LocalDateTime
dan mencetaknya. Selain menggunakan mod format yang dipratentukan, kami juga boleh menggunakan kaedah lain DateTimeFormatter
untuk mencapai pemformatan tarikh dan masa yang lebih terperinci. Sebagai contoh, kita boleh menggunakan kelas DateTimeFormatterBuilder
untuk membina format tersuai: 🎜rrreee🎜 Dalam contoh di atas, kami menggunakan kelas DateTimeFormatterBuilder
untuk mencipta peranti pemformat tarikh tersuai. Dalam pemformat ini, kami mula-mula menambah rentetan literal "Hari ini ialah " menggunakan kaedah appendLiteral()
, dan kemudian menambah tarikh menggunakan kaedah appendValue()
Akhir sekali, a rentetan literal "." ditambah. Dengan menggunakan kaedah ini, kami boleh membina format tarikh yang memenuhi keperluan kami. 🎜🎜Selain kelas DateTimeFormatter, Java 11 juga memperkenalkan antara muka TemporalAccessor, yang boleh digunakan sebagai pengakses universal untuk objek tarikh dan masa. Ia menyediakan satu set kaedah biasa yang boleh mengakses pelbagai bahagian objek tarikh dan masa melalui kelas pelaksanaan tertentu seperti LocalDateTime, LocalDate, dll. Berikut ialah beberapa contoh penggunaan TemporalAccessor: 🎜rrreee🎜 Dalam contoh di atas, kami mencipta objek tarikh dan masa semasa menggunakan kelas LocalDateTime
. Kami kemudian menggunakan kaedah get()
dan penghitungan ChronoField
untuk mendapatkan pelbagai bahagian tarikh dan masa, seperti tahun, bulan, hari, jam, minit dan kedua. Akhirnya, kami menggabungkan kepingan bersama-sama dan mencetaknya. 🎜🎜Dengan menggunakan kelas DateTimeFormatter dan antara muka TemporalAccessor baharu dalam Java 11, kami boleh mengendalikan tarikh dan masa dengan tepat dan mudah. Sama ada memformat objek tarikh dan masa ke dalam rentetan, atau menghuraikan rentetan ke dalam objek tarikh dan masa, kelas utiliti baharu ini menyediakan kaedah yang fleksibel dan mudah digunakan untuk menjadikan pemprosesan tarikh dan masa lebih cekap dan boleh dipercayai. Pembangun boleh memilih alat yang sesuai berdasarkan keperluan mereka untuk mengendalikan pelbagai operasi tarikh dan masa. 🎜Atas ialah kandungan terperinci Menghuraikan dan memformat tarikh dan masa menggunakan kelas DateTimeFormatter baharu dan antara muka TemporalAccessor dalam Java 11. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!