Java常用API
ZoneId类
ZoneId类可以获取时区的ID
| 方法 | 作用 |
|---|---|
| systemDefault() | 静态方法,获取系统默认的时区 |
| getAvaliableZoneIds() | 静态方法,返回一个Set集合,获取Java支持的所有时区ID |
| of() | 静态方法,把某个时区id封装成ZoneId对象 |
public class Test {
public static void main(String[] args) {
//获取系统的默认时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId);
System.out.println("--------------------");
//获取Java支持的所有时区的字符串
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
for (String id : zoneIds) {
System.out.println(id);
}
System.out.println("--------------------");
//把某个时区id封装成ZoneId对象
ZoneId id = ZoneId.of("Asia/Tokyo");
System.out.println(id);
}
ZonedDateTime类
获取带时区的日期时间,年月日,时分秒
| 方法 | 作用 |
|---|---|
| now() | 静态方法,获取当前系统的时间 |
| now(ZoneId zone) | 传入一个时区对象,获取指定时区的时间 |
| getXxx() | 获取数据 |
| withXxx() | 修改数据 |
| plusXxx() | 添加数据 |
| minusXxx() | 减少数据 |
| equals() | 判断两个对象是否相等 |
| isBefore() | 判断对象时间是否在指定对象时间之前 |
| isAfter() | 判断对象时间是否在指定对象时间之后 |
public class Test {
public static void main(String[] args) {
//创建对象
ZonedDateTime now = ZonedDateTime.now();
ZonedDateTime now1 = ZonedDateTime.now(ZoneId.systemDefault());
//获取数据
int year = now.getYear();
System.out.println(year);
//修改数据
ZonedDateTime withYear = now.withYear(2008);
System.out.println(withYear);
//添加数据
ZonedDateTime plusYears = now.plusYears(10);
System.out.println(plusYears);
//减少数据
ZonedDateTime minusYears = now.minusYears(10);
System.out.println(minusYears);
//时间比较
//判断是否相等
boolean equals = now.equals(now1);
System.out.println(equals);
//判断是否在指定时间之前
boolean before = now.isBefore(now1);
System.out.println(before);
//判断是否在指定时间之后
boolean after = now.isAfter(now1);
System.out.println(after);
}
}
Instant类
Instant类是Java 8中引入的新类,用于表示精确到纳秒级别的时间戳。作用是获取某个瞬间的时间,秒,毫秒,微秒,纳秒
| 方法 | 作用 |
|---|---|
| now() | 静态方法,获取当前时间戳对象 |
| getEpochSecond() | 获取当前对象的总秒数 |
| getNano() | 获取当前时间后面的纳秒数 |
| plus() | 增加指定的时间间隔 |
| minus() | 减少指定的时间间隔 |
public class Test {
public static void main(String[] args) {
//Instant类是Java 8中引入的新类,用于表示精确到纳秒级别的时间戳。
// 作用是获取某个瞬间的时间,秒,毫秒,微秒,纳秒
//获取对象
Instant now = Instant.now();
System.out.println(now);
//获取总秒数
long epochSecond = now.getEpochSecond();
System.out.println(epochSecond);
//获取纳秒数
int nano = now.getNano();
System.out.println(nano);
//增加指定的时间间隔
Instant plus = now.plus(Duration.ofMinutes(10));
System.out.println(plus);
//减去指定的时间间隔
Instant minus = now.minus(Duration.ofMinutes(6));
System.out.println(minus);
}
}
博客介绍了Java中与时间相关的类。ZoneId类可获取时区ID;ZonedDateTime类能获取带时区的日期时间,包含年月日、时分秒;Instant类是Java 8引入的新类,用于表示精确到纳秒级别的时间戳,可获取某个瞬间的时间。





