14.Java8日期时间工具类
发布人:shili8
发布时间:2024-12-26 03:02
阅读次数:0
**Java8 日期时间工具类**
Java8 中引入了新的日期时间 API,提供了更强大的功能和灵活性。这个工具类将展示如何使用这些新特性来处理日期时间相关的任务。
### 一、日期时间基本概念在 Java8 中,日期时间被表示为 `LocalDate`、`LocalTime` 和 `Instant` 等类型。其中:
* `LocalDate`: 表示一个日期(不含时间),如2022-07-25。
* `LocalTime`: 表示一个时间(不含日期),如14:30。
* `Instant`: 表示一个时间戳,表示从 Unix 纪元(1970 年1 月1 日)开始的秒数。
### 二、日期时间工具类下面是我们自定义的一个日期时间工具类:
javaimport java.time.*; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; /** * 日期时间工具类 */ public class DateTimeUtil { /** * 日期时间格式化器 */ public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss"); /** * 获取当前日期 * * @return 当前日期 */ public static LocalDate getCurrentDate() { return LocalDate.now(); } /** * 获取当前时间 * * @return 当前时间 */ public static LocalTime getCurrentTime() { return LocalTime.now(); } /** * 获取当前时间戳 * * @return 当前时间戳 */ public static Instant getCurrentInstant() { return Instant.now(); } /** * 将日期转换为字符串 * * @param date 日期 * @return 日期字符串 */ public static String dateToString(LocalDate date) { return date.format(DATE_FORMATTER); } /** * 将时间转换为字符串 * * @param time 时间 * @return 时间字符串 */ public static String timeToString(LocalTime time) { return time.format(TIME_FORMATTER); } /** * 将时间戳转换为日期 * * @param instant 时间戳 * @return 日期 */ public static LocalDate instantToDate(Instant instant) { return instant.atDateReturn(); } /** * 将时间戳转换为时间 * * @param instant 时间戳 * @return 时间 */ public static LocalTime instantToTime(Instant instant) { return instant.atTimeReturn(); } /** * 将日期和时间合并成一个时间戳 * * @param date 日期 * @param time 时间 * @return 时间戳 */ public static Instant combineDateAndTime(LocalDate date, LocalTime time) { return date.atTime(time).toInstant(); } /** * 将日期和时间合并成一个时间戳(使用当前日期) * * @param time 时间 * @return 时间戳 */ public static Instant combineDateAndTime(LocalTime time) { return getCurrentDate().atTime(time).toInstant(); } /** * 将时间戳转换为日期和时间 * * @param instant 时间戳 * @return 日期和时间 */ public static LocalTimeAndDate instantToLocalTimeAndDate(Instant instant) { return instant.atLocalTimeReturn(); } }
### 三、使用示例下面是使用这个工具类的示例:
javapublic class Main { public static void main(String[] args) { // 获取当前日期 LocalDate currentDate = DateTimeUtil.getCurrentDate(); System.out.println("当前日期:" + DateTimeUtil.dateToString(currentDate)); // 获取当前时间 LocalTime currentTime = DateTimeUtil.getCurrentTime(); System.out.println("当前时间:" + DateTimeUtil.timeToString(currentTime)); // 获取当前时间戳 Instant currentInstant = DateTimeUtil.getCurrentInstant(); System.out.println("当前时间戳:" + currentInstant); // 将日期转换为字符串 LocalDate date = LocalDate.of(2022,7,25); String dateString = DateTimeUtil.dateToString(date); System.out.println("日期字符串:" + dateString); // 将时间转换为字符串 LocalTime time = LocalTime.of(14,30); String timeString = DateTimeUtil.timeToString(time); System.out.println("时间字符串:" + timeString); // 将时间戳转换为日期 Instant instant = currentInstant; LocalDate dateFromInstant = DateTimeUtil.instantToDate(instant); System.out.println("日期:" + DateTimeUtil.dateToString(dateFromInstant)); // 将时间戳转换为时间 LocalTime timeFromInstant = DateTimeUtil.instantToTime(instant); System.out.println("时间:" + DateTimeUtil.timeToString(timeFromInstant)); // 将日期和时间合并成一个时间戳 LocalDate date1 = LocalDate.of(2022,7,25); LocalTime time1 = LocalTime.of(14,30); Instant combinedInstant = DateTimeUtil.combineDateAndTime(date1, time1); System.out.println("合并后的时间戳:" + combinedInstant); // 将日期和时间合并成一个时间戳(使用当前日期) LocalDate date2 = getCurrentDate(); LocalTime time2 = currentTime; Instant combinedInstant2 = DateTimeUtil.combineDateAndTime(time2); System.out.println("合并后的时间戳(使用当前日期):" + combinedInstant2); // 将时间戳转换为日期和时间 instant = currentInstant; LocalTimeAndDate localTimeAndDate = DateTimeUtil.instantToLocalTimeAndDate(instant); System.out.println("日期和时间:" + DateTimeUtil.dateToString(localTimeAndDate.getDate()) + " " + DateTimeUtil.timeToString(localTimeAndDate.getTime())); } }
### 四、总结Java8 中的日期时间 API 提供了更强大的功能和灵活性。这个工具类展示了如何使用这些新特性来处理日期时间相关的任务,包括获取当前日期和时间、将日期转换为字符串、将时间戳转换为日期和时间等。