如何处理java时间
获取当前时间
使用 java.time.LocalDateTime.now() 可以获取当前时间。该方法返回一个包含日期和时间的对象。
LocalDateTime now = LocalDateTime.now();
System.out.println("当前时间: " + now);
格式化时间
使用 DateTimeFormatter 可以将时间格式化为指定的字符串格式。常见的模式包括 "yyyy-MM-dd HH:mm:ss"。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = now.format(formatter);
System.out.println("格式化时间: " + formattedDateTime);
解析字符串为时间
使用 DateTimeFormatter 可以将字符串解析为 LocalDateTime 对象。确保字符串格式与指定的模式匹配。
String dateTimeString = "2023-10-01 14:30:00";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println("解析时间: " + parsedDateTime);
时间加减操作
使用 plus 和 minus 方法可以对时间进行加减操作。支持的单位包括天、小时、分钟等。
LocalDateTime futureDateTime = now.plusDays(1).plusHours(2);
LocalDateTime pastDateTime = now.minusMinutes(30);
System.out.println("未来时间: " + futureDateTime);
System.out.println("过去时间: " + pastDateTime);
时间比较
使用 isBefore、isAfter 或 isEqual 可以比较两个时间的先后关系。
boolean isBefore = now.isBefore(futureDateTime);
boolean isAfter = now.isAfter(pastDateTime);
System.out.println("当前时间是否在未来时间之前: " + isBefore);
System.out.println("当前时间是否在过去时间之后: " + isAfter);
计算时间差
使用 Duration 可以计算两个时间点之间的差值。结果可以转换为天、小时、分钟或秒。
Duration duration = Duration.between(now, futureDateTime);
long hours = duration.toHours();
long minutes = duration.toMinutes();
System.out.println("时间差(小时): " + hours);
System.out.println("时间差(分钟): " + minutes);
时区处理
使用 ZonedDateTime 可以处理带时区的时间。通过 ZoneId 指定时区,例如 "Asia/Shanghai"。
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
System.out.println("带时区的时间: " + zonedDateTime);
时间戳转换
使用 Instant 可以将时间转换为时间戳(毫秒或秒),或从时间戳转换为时间。
Instant instant = Instant.now();
long epochMilli = instant.toEpochMilli();
long epochSecond = instant.getEpochSecond();
System.out.println("时间戳(毫秒): " + epochMilli);
System.out.println("时间戳(秒): " + epochSecond);
Instant fromEpochMilli = Instant.ofEpochMilli(epochMilli);
System.out.println("从时间戳转换的时间: " + fromEpochMilli);
日期与时间分离
使用 LocalDate 和 LocalTime 可以分别处理日期和时间部分。
LocalDate date = now.toLocalDate();
LocalTime time = now.toLocalTime();
System.out.println("日期部分: " + date);
System.out.println("时间部分: " + time);
周几和月份处理
使用 DayOfWeek 和 Month 枚举可以获取时间的周几和月份信息。

DayOfWeek dayOfWeek = now.getDayOfWeek();
Month month = now.getMonth();
System.out.println("周几: " + dayOfWeek);
System.out.println("月份: " + month);






