java JDK8时间 类 日历和工具类


Java JDK 8 中包含许多与时间、日期和日历相关的类和工具类。下面是其中一些类和工具类:

  1. java.time 包:这是一个全新的日期时间API,是 JDK 8 中引入的。该包中包含了多个类,如 LocalDate、LocalTime、LocalDateTime、ZonedDateTime 等,用于处理日期、时间和日期时间。
  2. java.util.Date 类:这是旧的日期时间API,但在 JDK 8 中仍然被支持。Date 类表示一个特定的时间点,而不是一个日期时间。它还可以与 SimpleDateFormat 类一起使用,用于格式化和解析日期时间字符串。
  3. java.util.Calendar 类:这个类用于处理日期和时间,并提供了一些方法来操作和处理日期和时间。但是,它的使用较为麻烦,不建议在新的代码中使用。
  4. java.text.SimpleDateFormat 类:这个类用于格式化和解析日期时间字符串。它可以将日期时间格式化为特定的字符串,并可以将字符串解析为日期时间对象。
  5. java.util.TimeZone 类:这个类用于表示时区,可以将日期时间对象转换为特定时区的时间。它还提供了一些方法来获取和设置时区信息。
  6. java.time.format.DateTimeFormatter 类:这个类用于格式化和解析日期时间字符串。它提供了一些预定义的格式化程序,并允许您定义自己的格式化程序。

以上是 Java JDK 8 中与时间、日期和日历相关的一些类和工具类。在处理日期和时间时,建议使用新的 java.time 包中的类,因为它们提供了更好的类型安全性和可读性。

  1. java.time.temporal 包:这个包提供了一些用于访问和操作日期时间的接口和枚举。例如,TemporalAccessor 接口和 TemporalField 枚举用于访问日期时间对象的各个部分,如年、月、日、时、分、秒等。
  2. java.time.zone 包:这个包用于处理时区信息。它提供了一些类和接口来表示和处理时区信息,如 ZoneId、ZoneOffset 和 ZoneRules 等。
  3. java.util.GregorianCalendar 类:这个类是 Calendar 类的子类,用于处理格里高利历。它提供了一些方法来操作和处理日期和时间,但使用起来也比较繁琐。
  4. java.util.concurrent.TimeUnit 枚举:这个枚举提供了一些常量来表示时间单位,如毫秒、秒、分钟、小时等。它经常与 System.nanoTime() 方法一起使用,用于计算代码的执行时间。

除了上述类和工具类外,还有一些其他的类和接口可用于处理日期、时间和日历,具体取决于您的需求和应用程序的要求。

  1. java.sql.Date 类:这个类用于表示 SQL DATE 值,它扩展了 java.util.Date 类。它的日期部分与 java.util.Date 相同,但时间部分被设置为午夜(00:00:00)。
  2. java.sql.Time 类:这个类用于表示 SQL TIME 值,它扩展了 java.util.Date 类。它的日期部分被设置为 1970 年 1 月 1 日,时间部分包含小时、分钟和秒。
  3. java.sql.Timestamp 类:这个类用于表示 SQL TIMESTAMP 值,它扩展了 java.util.Date 类。它的日期部分与 java.util.Date 相同,时间部分包含小时、分钟、秒和纳秒。
  4. java.util.Timer 类:这个类用于安排在指定时间执行某个任务。它提供了一些方法来安排和取消任务,并允许您指定执行任务的时间间隔。
  5. java.util.TimerTask 类:这个类用于表示要执行的任务。您可以创建一个 TimerTask 对象,并在指定的时间执行该任务。

总之,Java JDK 8 提供了多个类和工具类来处理日期、时间和日历。新的 java.time 包提供了更好的类型安全性和可读性,建议在处理日期和时间时使用它。如果您需要与 SQL 数据库交互,则可以使用 java.sql 包中的类。如果您需要在指定的时间执行某个任务,则可以使用 java.util.Timer 和 TimerTask 类。

  1. java.util.Calendar.Builder 类:这个类提供了一种更简单的方式来创建 Calendar 对象。它允许您在创建 Calendar 对象时指定日期和时间的各个部分,而无需显式设置每个部分。
  2. java.util.SimpleTimeZone 类:这个类用于表示简单的时区,它包含了一个偏移量和一个 ID。它提供了一些方法来访问和操作时区信息,如获取偏移量和 ID 等。
  3. java.time.Clock 类:这个类用于访问当前时间。它提供了一个静态方法 systemDefaultZone(),返回默认时区的 Clock 对象,还提供了一些其他的静态方法和实例方法来访问和操作时间。
  4. java.time.Duration 类:这个类用于表示时间间隔。它提供了一些方法来计算两个时间点之间的时间间隔,还提供了一些方法来执行加、减和乘除等运算。
  5. java.time.Period 类:这个类用于表示时间段。它提供了一些方法来计算两个日期之间的时间段,还提供了一些方法来执行加、减和乘除等运算。

以上是 Java JDK 8 中另外一些与时间、日期和日历相关的类和工具类,它们可以用于处理更复杂的时间操作。在选择使用哪个类时,需要根据应用程序的需求和要求进行选择。

  1. java.time.Instant 类:这个类用于表示距离 Unix 元年(1970 年 1 月 1 日 00:00:00 UTC)的秒数和纳秒数。它提供了一些方法来访问和操作时间。
  2. java.time.ZoneId 类:这个类用于表示时区 ID。它提供了一些方法来访问和操作时区信息,如获取时区偏移量、获取可用的时区 ID 列表等。
  3. java.time.ZoneOffset 类:这个类用于表示固定的时区偏移量,如 UTC+8。它提供了一些方法来访问和操作时区信息,如获取偏移量、获取时区 ID 等。
  4. java.time.format.DateTimeFormatter 类:这个类用于格式化和解析日期、时间和时间戳等对象。它提供了一些预定义的格式模式和方法,还允许您自定义格式模式。
  5. java.time.format.DateTimeParseException 类:这个异常类用于表示解析日期、时间或时间戳时发生的异常。
  6. java.time.format.FormatStyle 枚举:这个枚举提供了三种日期格式和三种时间格式,它们是 SHORT、MEDIUM 和 LONG。您可以使用这些格式来创建 DateTimeFormatter 对象。
  7. java.text.SimpleDateFormat 类:这个类用于格式化和解析日期和时间,它提供了一些预定义的格式模式和方法,允许您自定义格式模式。但是,它不是线程安全的,不建议在多线程环境中使用。

以上是 Java JDK 8 中的一些与时间、日期和日历相关的类和工具类。在选择使用哪个类时,需要根据应用程序的需求和要求进行选择。在处理时间时,建议使用新的 java.time 包,因为它提供了更好的类型安全性和可读性,同时避免了旧 API 中的一些问题。

  1. java.time.temporal.TemporalAdjusters 类:这个类提供了一些静态方法,可以用于对日期进行调整。例如,next(DayOfWeek) 方法返回下一个指定的星期几日期,previous(DayOfWeek) 方法返回上一个指定的星期几日期,firstDayOfMonth() 方法返回当前月份的第一天等。
  2. java.time.temporal.ChronoUnit 枚举:这个枚举用于表示时间单位,如年、月、日、小时、分钟、秒等。它可以与 java.time.temporal.Temporal 对象一起使用,进行时间计算。
  3. java.time.zone.ZoneRulesException 类:这个异常类用于表示访问时区规则时发生的异常。
  4. java.time.zone.ZoneOffsetTransition 类:这个类用于表示时区转换。它包含转换的本地时间、转换前后的偏移量等信息。
  5. java.time.zone.ZoneOffsetTransitionRule 类:这个类用于表示时区转换规则。它包含转换前后的偏移量、转换时间、是否为标准时间等信息。
  6. java.time.zone.ZoneRules 类:这个类用于表示时区规则。它包含时区 ID、可用的转换规则等信息,还提供了一些方法来访问和操作时区规则。

以上是 Java JDK 8 中的一些与时间、日期和日历相关的类和工具类。在选择使用哪个类时,需要根据应用程序的需求和要求进行选择。如果需要更复杂的时间操作,可以使用这些类和工具类。

以下是使用 Java JDK 8 中一些时间、日期和日历相关的类和工具类的示例:

  1. 获取当前日期和时间:
LocalDateTime now = LocalDateTime.now();
System.out.println("Current datetime: " + now);
  1. 格式化日期和时间:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = now.format(formatter);
System.out.println("Formatted datetime: " + formattedDateTime);
  1. 解析日期和时间:
String dateTimeStr = "2023-05-10 12:30:45";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeStr, formatter);
System.out.println("Parsed datetime: " + parsedDateTime);
  1. 计算两个日期之间的天数:
LocalDate date1 = LocalDate.of(2023, 5, 1);
LocalDate date2 = LocalDate.of(2023, 5, 10);
long daysBetween = ChronoUnit.DAYS.between(date1, date2);
System.out.println("Days between " + date1 + " and " + date2 + ": " + daysBetween);
  1. 使用 TemporalAdjusters 调整日期:
LocalDate date = LocalDate.of(2023, 5, 10);
LocalDate nextMonday = date.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println("Next Monday after " + date + ": " + nextMonday);
  1. 使用 Duration 计算时间差:
LocalTime time1 = LocalTime.of(10, 0);
LocalTime time2 = LocalTime.of(11, 30);
Duration duration = Duration.between(time1, time2);
System.out.println("Duration between " + time1 + " and " + time2 + ": " + duration);

这些示例展示了如何使用 Java JDK 8 中的一些时间、日期和日历相关的类和工具类进行常见的时间操作。

  1. 使用 Period 计算日期差:
LocalDate date1 = LocalDate.of(2023, 5, 1);
LocalDate date2 = LocalDate.of(2023, 5, 10);
Period period = Period.between(date1, date2);
System.out.println("Period between " + date1 + " and " + date2 + ": " + period);
  1. 获取当前时区:
ZoneId zoneId = ZoneId.systemDefault();
System.out.println("Current timezone: " + zoneId);
  1. 获取指定时区的时间:
ZoneId zoneId = ZoneId.of("America/New_York");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
System.out.println("Datetime in " + zoneId + ": " + zonedDateTime);
  1. 获取指定日期的年、月、日等信息:
LocalDate date = LocalDate.of(2023, 5, 10);
int year = date.getYear();
Month month = date.getMonth();
int dayOfMonth = date.getDayOfMonth();
DayOfWeek dayOfWeek = date.getDayOfWeek();
System.out.println("Year: " + year);
System.out.println("Month: " + month);
System.out.println("Day of month: " + dayOfMonth);
System.out.println("Day of week: " + dayOfWeek);
  1. 使用 Clock 获取当前时间:
Clock clock = Clock.systemDefaultZone();
Instant instant = clock.instant();
System.out.println("Current time: " + instant);
  1. 使用 LocalDate 和 LocalTime 合成 LocalDateTime:
LocalDate date = LocalDate.of(2023, 5, 10);
LocalTime time = LocalTime.of(12, 30, 45);
LocalDateTime dateTime = LocalDateTime.of(date, time);
System.out.println("Datetime: " + dateTime);

这些示例展示了 Java JDK 8 中一些时间、日期和日历相关的类和工具类的更多用法。可以根据实际需求使用这些类和工具类进行更复杂的时间操作。

  1. 使用 Instant 表示时间戳:
Instant instant = Instant.now();
System.out.println("Current timestamp: " + instant);
  1. 使用 DateTimeFormatter 格式化日期和时间:
LocalDateTime dateTime = LocalDateTime.of(2023, 5, 10, 12, 30, 45);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted datetime: " + formattedDateTime);
  1. 使用 DateTimeFormatter 解析日期和时间:
javaCopy codeString dateTimeStr = "2023-05-10 12:30:45";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeStr, formatter);
System.out.println("Parsed datetime: " + parsedDateTime);
  1. 使用 ZoneOffset 和 ZoneDateTime 表示带偏移量的时间:
LocalDateTime dateTime = LocalDateTime.of(2023, 5, 10, 12, 30, 45);
ZoneOffset offset = ZoneOffset.of("+08:00");
OffsetDateTime offsetDateTime = OffsetDateTime.of(dateTime, offset);
System.out.println("Datetime with offset: " + offsetDateTime);
  1. 使用 Duration 和 Period 进行时间加减:
LocalDateTime dateTime = LocalDateTime.of(2023, 5, 10, 12, 30, 45);
Duration duration = Duration.ofHours(3);
LocalDateTime newDateTime = dateTime.plus(duration);
System.out.println("Datetime after adding duration: " + newDateTime);

LocalDate date = LocalDate.of(2023, 5, 10);
Period period = Period.ofDays(7);
LocalDate newDate = date.plus(period);
System.out.println("Date after adding period: " + newDate);

这些示例展示了 Java JDK 8 中一些时间、日期和日历相关的类和工具类的更多用法,包括使用 Instant、带偏移量的时间和时间加减等。可以根据实际需求使用这些类和工具类进行更复杂的时间操作。

  1. 使用 ZoneOffset 解析带偏移量的时间字符串:
String dateTimeStr = "2023-05-10T12:30:45+08:00";
OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateTimeStr);
ZoneOffset offset = offsetDateTime.getOffset();
System.out.println("Datetime with offset: " + offsetDateTime);
System.out.println("Offset: " + offset);
  1. 使用 TemporalAdjusters 计算日期:
LocalDate date = LocalDate.of(2023, 5, 10);
LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("First day of month: " + firstDayOfMonth);
System.out.println("Last day of month: " + lastDayOfMonth);
  1. 使用 YearMonth 和 MonthDay 表示特定月份和特定日:
YearMonth yearMonth = YearMonth.of(2023, 5);
int daysInMonth = yearMonth.lengthOfMonth();
System.out.println("Days in month: " + daysInMonth);

MonthDay monthDay = MonthDay.of(5, 10);
System.out.println("Month day: " + monthDay);
  1. 使用 ChronoUnit 计算时间差:
LocalDateTime dateTime1 = LocalDateTime.of(2023, 5, 1, 12, 30, 0);
LocalDateTime dateTime2 = LocalDateTime.of(2023, 5, 10, 12, 30, 0);
long daysBetween = ChronoUnit.DAYS.between(dateTime1, dateTime2);
long hoursBetween = ChronoUnit.HOURS.between(dateTime1, dateTime2);
long minutesBetween = ChronoUnit.MINUTES.between(dateTime1, dateTime2);
System.out.println("Days between: " + daysBetween);
System.out.println("Hours between: " + hoursBetween);
System.out.println("Minutes between: " + minutesBetween);

这些示例展示了 Java JDK 8 中一些时间、日期和日历相关的类和工具类的更多用法,包括解析带偏移量的时间字符串、计算日期、表示特定月份和特定日,以及计算时间差等。可以根据实际需求使用这些类和工具类进行更复杂的时间操作。

  1. 使用 LocalDate、LocalTime 和 LocalDateTime 表示本地日期、本地时间和本地日期时间:
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("Local date: " + localDate);
System.out.println("Local time: " + localTime);
System.out.println("Local datetime: " + localDateTime);
  1. 使用 Year、Month 和 DayOfWeek 表示年、月和星期几:
Year year = Year.now();
Month month = Month.MAY;
DayOfWeek dayOfWeek = DayOfWeek.MONDAY;
System.out.println("Year: " + year);
System.out.println("Month: " + month);
System.out.println("Day of week: " + dayOfWeek);
  1. 使用 Period 和 Duration 计算时间差和时间段:
LocalDate date1 = LocalDate.of(2023, 5, 1);
LocalDate date2 = LocalDate.of(2023, 5, 10);
Period period = Period.between(date1, date2);
System.out.println("Period: " + period);

LocalTime time1 = LocalTime.of(12, 30, 0);
LocalTime time2 = LocalTime.of(14, 0, 0);
Duration duration = Duration.between(time1, time2);
System.out.println("Duration: " + duration);
  1. 使用 TemporalAdjusters 计算日期:
LocalDate localDate = LocalDate.now();
LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("First day of month: " + firstDayOfMonth);
System.out.println("Last day of month: " + lastDayOfMonth);

这些示例展示了 Java JDK 8 中一些时间、日期和日历相关的类和工具类的更多用法,包括表示本地日期、本地时间和本地日期时间、表示年、月和星期几,以及计算时间差和时间段等。可以根据实际需求使用这些类和工具类进行更复杂的时间操作。


原文链接:codingdict.net