Java 日期和时间 API 提供了一组强大且灵活的类,用于处理日期和时间操作。在 Java 8 及以后的版本中,Java 引入了新的 java.time 包,它解决了旧的 java.util.Date 和 java.util.Calendar 类的许多问题。以下是一些实用技巧和示例,帮助你轻松处理日期和时间。
LocalDate
LocalDate today = LocalDate.now(); // 获取当前日期 LocalDate specificDate = LocalDate.of(2023, Month.JUNE, 1); // 指定日期
LocalTime
LocalTime now = LocalTime.now(); // 获取当前时间 LocalTime specificTime = LocalTime.of(14, 30, 15); // 指定时间
LocalDateTime
LocalDateTime now = LocalDateTime.now(); // 获取当前日期时间 LocalDateTime specificDateTime = LocalDateTime.of(2023, Month.JUNE, 1, 14, 30, 15); // 指定日期时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); String formattedDateTime = now.format(formatter); // 格式化日期时间 System.out.println(formattedDateTime); // 输出:2024-06-01 14:30:15
String dateTimeString = "2024-06-01 14:30:15"; LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter); // 解析日期时间 System.out.println(parsedDateTime); // 输出:2024-06-01T14:30:15
LocalDate today = LocalDate.now(); LocalDate tomorrow = today.plusDays(1); // 加1天 LocalDate lastWeek = today.minusWeeks(1); // 减1周 LocalDateTime now = LocalDateTime.now(); LocalDateTime nextHour = now.plusHours(1); // 加1小时 LocalDateTime lastMinute = now.minusMinutes(1); // 减1分钟
LocalDate startDate = LocalDate.of(2024, Month.JUNE, 1); LocalDate endDate = LocalDate.of(2024, Month.JUNE, 10); Period period = Period.between(startDate, endDate); // 计算日期差 System.out.println("天数差异: " + period.getDays()); // 输出:天数差异: 9 LocalDateTime startTime = LocalDateTime.of(2024, Month.JUNE, 1, 14, 0); LocalDateTime endTime = LocalDateTime.of(2024, Month.JUNE, 1, 16, 30); Duration duration = Duration.between(startTime, endTime); // 计算时间差 System.out.println("小时差异: " + duration.toHours()); // 输出:小时差异: 2
ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York")); // 获取当前时间并设置时区 System.out.println(zonedDateTime); // 输出:2024-06-01T14:30:15-04:00[America/New_York] ZonedDateTime specificZonedDateTime = ZonedDateTime.of(2024, 6, 1, 14, 30, 15, 0, ZoneId.of("Asia/Shanghai")); // 指定日期时间和时区 System.out.println(specificZonedDateTime); // 输出:2024-06-01T14:30:15+08:00[Asia/Shanghai]
ZonedDateTime shanghaiTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai")); ZonedDateTime newYorkTime = shanghaiTime.withZoneSameInstant(ZoneId.of("America/New_York")); // 将上海时间转换为纽约时间 System.out.println(newYorkTime); // 输出转换后的时间
LocalDateTime now = LocalDateTime.now(); int year = now.getYear(); int month = now.getMonthValue(); int day = now.getDayOfMonth(); int hour = now.getHour(); int minute = now.getMinute(); int second = now.getSecond(); System.out.printf("年: %d, 月: %d, 日: %d, 时: %d, 分: %d, 秒: %d%n", year, month, day, hour, minute, second); // 输出当前的年、月、日、时、分、秒
LocalDate date = LocalDate.now(); boolean isLeapYear = date.isLeapYear(); System.out.println("当前年份是闰年吗?" + isLeapYear); // 输出是否是闰年
通过这些实用技巧和示例,您可以更加轻松地处理 Java 中的日期和时间操作。如果您有更多具体需求,可以参考 Java 官方文档或者深入学习 java.time 包中的其他类和方法。
原文链接:codingdict.net