Java函数如何实现时间日期的转换
发布时间:2023-06-09 01:31:21
在Java中,我们可以使用java.time包中的类来实现时间日期的转换。其中,主要涉及到以下几个类:
1. LocalDate
LocalDate类表示不带时区的日期。我们可以通过该类的parse()方法将一个字符串转化为LocalDate对象,该方法的参数为一个字符串格式化的模板,如下所示:
String strDate = "2021-06-15";
LocalDate localDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
2. LocalTime
LocalTime类表示不带时区的时间。我们可以通过该类的parse()方法将一个字符串转化为LocalTime对象,该方法的参数为一个字符串格式化的模板,如下所示:
String strTime = "12:30:00";
LocalTime localTime = LocalTime.parse(strTime, DateTimeFormatter.ofPattern("HH:mm:ss"));
3. LocalDateTime
LocalDateTime类表示不带时区的日期时间。我们可以通过该类的parse()方法将一个字符串转化为LocalDateTime对象,该方法的参数为一个字符串格式化的模板,如下所示:
String strDateTime = "2021-06-15T12:30:00";
LocalDateTime localDateTime = LocalDateTime.parse(strDateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
4. ZonedDateTime
ZonedDateTime类表示带时区的日期时间。我们可以通过该类的parse()方法将一个字符串转化为ZonedDateTime对象,该方法的参数为一个字符串格式化的模板,如下所示:
String strZonedDateTime = "2021-06-15T12:30:00+08:00[Asia/Shanghai]";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(strZonedDateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX[z]"));
5. Date
我们也可以将java.util包中的Date类转换成java.time包中的LocalDateTime类来使用。如下所示:
Date date = new Date(); Instant instant = date.toInstant(); LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
同时,我们也可以将LocalDateTime类转换成Date类。如下所示:
LocalDateTime localDateTime = LocalDateTime.now(); Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant);
总体来说,我们可以使用以上的方式来实现时间日期的转换。需要注意的是,不同的时间日期类,字符串格式化模板会有所不同,需要根据具体情况选择合适的模板进行转换。
