LocalDate表示日期,不包含时间和时区信息,例如"2022-04-22"。
1.使用java.util.Date的toInstant()方法将Date对象转换为Instant对象,再使用Instant对象的atZone()方法将其转换为ZonedDateTime对象,最后使用ZonedDateTime对象的toLocalDate()方法将其转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDate LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
2.使用java.util.Date的toInstant()方法将Date对象转换为Instant对象,再使用Instant对象的atOffset()方法将其转换为OffsetDateTime对象,最后使用OffsetDateTime对象的toLocalDate()方法将其转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDate LocalDate localDate = date.toInstant().atOffset(ZoneOffset.UTC).toLocalDate();
3.使用java.util.Calendar类将Date对象转换为LocalDate对象。首先需要将Date对象转换为Calendar对象,然后使用Calendar对象的get()方法获取年、月、日等信息,最后使用LocalDate.of()方法将其转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDate Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); LocalDate localDate = LocalDate.of(year, month, day);
4.使用SimpleDateFormat类将Date对象转换为LocalDate对象。首先需要创建一个SimpleDateFormat对象,然后使用format()方法将Date对象格式化为指定的日期格式,最后使用LocalDate.parse()方法将其转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDate SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateString = dateFormat.format(date); LocalDate localDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalTime表示时间,不包含日期和时区信息,例如"09:30:00"。
1.使用java.util.Date的toInstant()方法将Date对象转换为Instant对象,再使用Instant对象的atZone()方法将其转换为ZonedDateTime对象,最后使用ZonedDateTime对象的toLocalTime()方法将其转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalTime LocalTime localTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
2.使用java.util.Date的toInstant()方法将Date对象转换为Instant对象,再使用Instant对象的atOffset()方法将其转换为OffsetDateTime对象,最后使用OffsetDateTime对象的toLocalTime()方法将其转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalTime LocalTime localTime = date.toInstant().atOffset(ZoneOffset.UTC).toLocalTime();
3.使用SimpleDateFormat将Date对象转换为LocalTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalTime SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); LocalTime localTime = LocalTime.parse(sdf.format(date));
4.使用Calendar类将Date对象转换为LocalDate对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalTime Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int hour = calendar.get(Calendar.HOUR_OF_DAY); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); LocalTime localTime = LocalTime.of(hour, minute, second);
LocalDateTime表示日期和时间,不包含时区信息,例如"2022-04-22T09:30:00"。
1.使用ofInstant()方法将Instant对象转换为LocalDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDateTime LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
2.使用java.util.Date的toInstant()方法将Date对象转换为Instant对象,再使用Instant对象的atOffset()方法将其转换为OffsetDateTime对象,最后使用OffsetDateTime对象的toLocalDateTime()方法将其转换为LocalDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalTime LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); System.out.println(localDateTime);
2.先将Date对象转换为ZonedDateTime对象,再使用toLocalDateTime()方法将其转换为LocalDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDateTime LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
3.使用SimpleDateFormat将Date对象转换为LocalDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDateTime SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 根据格式化字符串创建DateTimeFormatter对象 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localDateTime = LocalDateTime.parse(sdf.format(date), formatter);
4.使用Calendar将Date对象转换为LocalDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.LocalDateTime Calendar calendar = Calendar.getInstance(); calendar.setTime(date); LocalDateTime localDateTime = LocalDateTime.of( calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND), calendar.get(Calendar.MILLISECOND) * 1000000 );
ZonedDateTime表示带时区的日期和时间,例如"2022-04-22T09:30:00+08:00[GMT+08:00]"。
1.使用atZone()方法将Instant对象和指定时区转换为ZonedDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.ZonedDateTime ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault());
2.使用ofInstant()方法将Instant对象和指定时区转换为ZonedDateTime对象。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.ZonedDateTime ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
OffsetDateTime表示带有偏移量的日期和时间,例如"2022-04-22T09:30:00+08:00"。
1.调用toOffsetDateTime()方法将ZonedDateTime对象转换为OffsetDateTime对象,OffsetDateTime是ZonedDateTime的子类,它表示一个带有偏移量的日期时间。在转换时会自动将ZonedDateTime对象的时区信息转换为相应的偏移量信息。
// 创建一个java.util.Date对象 Date date = new Date(); // 将java.util.Date转换为java.time.OffsetDateTime OffsetDateTime offsetDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime();
上述示例代码中,使用了系统默认的时区信息ZoneId.systemDefault()可以指定其他时区信息,可以使用ZoneId.of(String)方法来指定。