许昌住房和城乡建设部网站,抖音个人主页模板,邯郸研情网络科技有限公司,安徽省住房城乡建设部网站一、Date类
#xff08;一#xff09;、ZoneId#xff1a;时区
1、概述 ZoneId是Java 8中处理时区的类。它用于表示时区标识符#xff0c;例如“America/New_York”或“Asia/Tokyo”。一共有600个时区。 2、常用方法:
static SetString getAvailableZoneIds()获…一、Date类
一、ZoneId时区
1、概述 ZoneId是Java 8中处理时区的类。它用于表示时区标识符例如“America/New_York”或“Asia/Tokyo”。一共有600个时区。 2、常用方法:
static SetString getAvailableZoneIds()获取Java中支持的所有时区static ZoneId systemDefault()获取系统默认时区static ZoneId of(String zoneId)获取一个指定的时区
// 获取Java中支持的所有时区
SetString zoneIds ZoneId.getAvailableZoneIds();
System.out.println(zoneIds);// 获取系统默认时区
ZoneId zoneId ZoneId.systemDefault();
System.out.println(zoneId);// 获取一个指定的时区
ZoneId zoneId1 ZoneId.of(Asia/Pontianak);
System.out.println(zoneId1);
二、Instant时间戳
1、概述 Instant是Java 8中新添加的类用于表示时间戳。它是一个包含秒数和纳秒数的不可变对象可以精确到纳秒级别。 2、常用方法:
static Instant now()获取当前时间的Instant对象标准时间static Instant ofXXX(long epochMilli)根据秒/毫秒/纳秒获取Instant对象ZoneDateTime atZone(ZoneId zone)指定时区boolean isXXX(Instant otherInstant)判断系列的方法Instant minusXXX(long millisToSubtract)减少时间系列的方法Instant plusXXX(long millisToSubtract)增加时间系列的方法
// 获取当前时间的Instant对象标准时间
Instant now Instant.now();
System.out.println(now);// 根据秒/毫秒/纳秒获取Instant对象
Instant instant Instant.ofEpochMilli(0L);
System.out.println(instant);Instant instant1 Instant.ofEpochSecond(1L);
System.out.println(instant1);Instant instant2 Instant.ofEpochSecond(1L, 1000000000L);
System.out.println(instant2);// 指定时区
ZonedDateTime zonedDateTime now.atZone(ZoneId.of(Asia/Shanghai));
System.out.println(zonedDateTime);// 判断系列的方法
Instant instant3 Instant.ofEpochMilli(0L);
Instant instant4 Instant.ofEpochMilli(1000L);System.out.println(instant3.isBefore(instant4));
System.out.println(instant3.isAfter(instant4));// 减少时间系列的方法
Instant instant5 Instant.ofEpochMilli(3000L);
System.out.println(instant5);Instant instant6 instant5.minusSeconds(1);
System.out.println(instant6);// 增加时间系列的方法
Instant instant7 Instant.ofEpochMilli(0L);
System.out.println(instant7);Instant instant8 instant7.plusSeconds(10);
System.out.println(instant8);
三、ZoneDateTime带时区的时间
1、概述 ZoneDateTime是Java 8中的日期时间类表示带有时区偏移量的日期时间信息。它是LocalDateTime类和ZoneId类的结合同时包含了时区信息和本地日期时间。它可以用来表示任意时区中的日期时间信息并且可以方便地进行时区之间的转换。 2、常用方法: now()返回当前时区的当前时间。 of()根据指定的年、月、日、小时、分钟、秒和时区创建一个 ZonedDateTime 对象。 toInstant()将 ZonedDateTime 对象转换为 Instant 对象即从时区时间转为标准时间。 withZoneSameInstant()根据指定时区将 ZonedDateTime 对象转换为同一时刻的另一个时区时间。 withZoneSameLocal()根据指定时区将 ZonedDateTime 对象转换为同一本地时间的另一个时区时间。 toLocalDateTime()将 ZonedDateTime 对象转换为 LocalDateTime 对象即去掉时区信息。 format()格式化 ZonedDateTime 对象为指定格式的时间字符串。 getYear()获取年份。 getMonth()获取月份。 getDayOfMonth()获取日期。 getDayOfWeek()获取星期几。 getHour()获取小时。 getMinute()获取分钟。 getSecond()获取秒数。 getNano()获取纳秒数。 二、日期格式化类
一、DateTimeFormatter用于时间的格式化和解析
1、概述 DateTimeFormatter是Java 8中的一个类用于格式化日期和时间。它可以将日期和时间对象转换为指定格式的字符串也可以将字符串转换为日期和时间对象。 2、常用方法:
static DateTimeFormatter ofPattern(格式)获取格式对象String format(时间对象)按照指定方式格式化
// 获取格式对象
ZonedDateTime zonedDateTime Instant.now().atZone(ZoneId.of(Asia/Shanghai));// 解析/格式化器
DateTimeFormatter dateTimeFormatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss EE a);// 格式化
System.out.println(dateTimeFormatter.format(zonedDateTime));
三、日历类
一、LocalDate年、月、日 LocalTime时、分、秒 LocalDateTime年、月、日、时、分、秒
1、概述 Java中的LocalDate是一个不可变的日期对象代表了一个年月日的日期不包含时间和时区信息。它是Java 8 API中的一部分位于java.time包中。 LocalDate类提供了许多方便的方法来处理日期、时间和时间间隔例如加减天数、月份、年份、与其他日期比较等。它支持ISO日历系统也就是公历。 LocalTime是Java 8中的时间API中的一种类型。它代表的是一个不带时区的时间即仅表示时间部分如小时、分钟、秒和毫秒。 Java中的LocalDateTime是一个表示日期和时间但没有时区偏移的类。它可以用于存储日期和时间的信息例如2021年8月15日下午3点30分。它不包含时区信息所以它无法表示特定时区的时间。 2、常用方法:
static XXX now()获取当前时间的对象static XXX of(...)获取指定时间的对象get开头的方法获取日历中的年月日时分秒等信息isBefore,isAfter比较两个LocalDatewith开头修改时间minus开头减少时间plus开头增加时间public LocalDate toLocalDate()LocalDateTiem转换成一个LocaDate对象public LocalTime toLocalTime()LocalDateTiem转换成一个LocaTime对象
// 只演示LocalDate
// 获取当前时间的对象
LocalDate date LocalDate.now();
System.out.println(date); // 2023-12-12// 获取指定时间的对象
LocalDate localDate LocalDate.of(2023, 1, 1);
System.out.println(localDate); // 2023-01-01// 获取日历中的年月日时分秒等信息
int year localDate.getYear();
System.out.println(year);// 2023// 获取月
Month m localDate.getMonth();
System.out.println(m); // JANUARY
System.out.println(m.getValue()); // 1int value localDate.getMonthValue();
System.out.println(value);// 1// 比较两个LocalDate
System.out.println(localDate.isBefore(localDate));
System.out.println(localDate.isAfter(localDate));// 修改时间
LocalDate withYear localDate.withYear(2000);
System.out.println(withYear); // 2000-01-01// 减少时间
LocalDate minusYears localDate.minusYears(1);
System.out.println(minusYears); // 2022-01-01// 增加时间
LocalDate plusYears localDate.plusYears(1);
System.out.println(plusYears); // 2024-01-01
四、工具类
一、Duration时间间隔秒纳秒
1、概述 Java中的Duration是一个类用于表示时间段的长度以时间的标准单位表示如小时、分钟、秒、毫秒等。它可以用于计算时间间隔比较时间间隔的大小以及在时间上进行加减运算等。 2、常用方法: ofXXX()方法根据不同的单位创建Duration对象。plusXXX()方法和minusXXX()方法用于添加和减去时间间隔。toXXX()方法将Duration对象转换为指定单位的时间间隔。compareTo()方法比较两个Duration对象的大小。getXXX()方法获取Duration对象的属性值例如hours、minutes、seconds等 Duration duration1 Duration.ofSeconds(60); // 创建一个持续时间为60秒的Duration对象
Duration duration2 Duration.ofMinutes(5); // 创建一个持续时间为5分钟的Duration对象Duration duration3 Duration.ofSeconds(30);
Duration duration4 duration3.plusSeconds(10); // 将持续时间增加10秒
Duration duration5 duration3.minusSeconds(10); // 将持续时间减少10秒Duration duration6 Duration.ofMinutes(5);
long seconds duration6.toSeconds(); // 将持续时间转换为秒数Duration duration7 Duration.ofSeconds(60);
Duration duration8 Duration.ofMinutes(1);
int result duration7.compareTo(duration8); // 比较持续时间是否相等Duration duration9 Duration.ofHours(2);
long hours duration9.toHours(); // 获取持续时间的小时数二、Period时间间隔年月日
1、概述 Java中的Period是表示两个日期之间的一段时间的类。它包含年、月、日等字段可以用于计算两个日期之间的差值也可以用于将一段时间加到日期上。Period类主要用于处理调整日期的情况例如加上一个月、减去一年等。 2、常用方法: ofYears(int years): 创建一个表示指定年数的Period对象。ofMonths(int months): 创建一个表示指定月数的Period对象。ofDays(int days): 创建一个表示指定天数的Period对象。between(LocalDate startDateInclusive, LocalDate endDateExclusive): 创建一个表示两个日期之间的Period对象。getYears(), getMonths(), getDays(): 获取Period对象中的年、月、日等字段的值。plusYears(long yearsToAdd), plusMonths(long monthsToAdd), plusDays(long daysToAdd): 将指定的年、月、日数加到Period对象上。minusYears(long yearsToSubtract), minusMonths(long monthsToSubtract), minusDays(long daysToSubtract): 将指定的年、月、日数从Period对象上减去。 // 创建Period对象
Period period Period.between(LocalDate.of(2019, 1, 1), LocalDate.now());
System.out.println(period.getYears() years period.getMonths() months period.getDays() days);// 在日期上加上一段时间
LocalDate date LocalDate.of(2022, 1, 1);
Period nextYear Period.ofYears(1);
LocalDate nextDate date.plus(nextYear);
System.out.println(Next year is nextDate); 三、ChronoUnit时间间隔所有单位
1、概述 ChronoUnit是Java 8中java.time包中的一个枚举类表示一种时间单位。它提供了一组时间单位常量用于在LocalDate、LocalTime、LocalDateTime和ZonedDateTime中执行日期或时间计算。 ChronoUnit中的常量包括 NANOS纳秒MICROS微秒MILLIS毫秒SECONDS秒MINUTES分钟HOURS小时HALF_DAYS半天DAYS天WEEKS周MONTHS月YEARS年DECADES十年CENTURIES世纪MILLENNIA千年ERAS时代 2、常用方法: between方法计算两个日期或时间之间的差距返回值为long类型。addTo方法将指定的时间段添加到日期或时间中。isSupportedBy方法判断指定的日期或时间是否支持指定的时间单位。getDuration方法获取指定时间单位的持续时间。valueOf方法根据字符串返回对应的ChronoUnit枚举常量。 LocalDate d1 LocalDate.of(2022, 1, 1);
LocalDate d2 LocalDate.of(2022, 1, 10);
long daysBetween ChronoUnit.DAYS.between(d1, d2);
System.out.println(daysBetween: daysBetween); // 输出9LocalDate date LocalDate.of(2022, 1, 1);
LocalDate newDate date.plus(1, ChronoUnit.WEEKS);
System.out.println(newDate: newDate); // 输出2022-01-08LocalDate date LocalDate.of(2022, 1, 1);
boolean isSupported ChronoUnit.HOURS.isSupportedBy(date);
System.out.println(isSupported: isSupported); // 输出falseDuration dayDuration ChronoUnit.DAYS.getDuration();
System.out.println(dayDuration: dayDuration); // 输出PT24HChronoUnit unit ChronoUnit.valueOf(MONTHS);
System.out.println(unit: unit); // 输出MONTHS