Java基础10:常用API(下)
- 一、Date
- 二、SimpleDateFormat
- 三、Calendar
- 四、ZoneId
- 五、Instant
- 六、ZoneDateTime
- 七、DateTimeFormatter
- 八、LocalDate、LocalTime、LocalDateTime
- 九、Duration、Period、ChronoUnit
- 十、包装类
一、Date
- Date类是一个JDK写好的JavaBean类,用来描述时间,精确到毫秒。
- 创建Date对象
- 空参构造:
Date date = new Date();
表示当前系统时间。 - 有参构造:
Date date = new Date(指定毫秒值);
表示指定的时间。
- 修改时间对象的毫秒值:
setTime(毫秒值);
- 获取时间对象的毫秒值:
getTime();
二、SimpleDateFormat
- 作用:
- 格式化:把时间变成指定的格式。
- 解析:把字符串表示的时间变成Date对象。
- 构造方法:
构造方法 | 说明 |
---|
SimpleDateFormat() | 默认格式构造一个SimpleDateFormat对象 |
SimpleDateFormat(String pattern) | 指定格式构造一个SimpleDateFormat对象 |
- 成员方法:
方法 | 返回类型 | 说明 |
---|
format(Date date) | String | 格式化(日期对象->字符串) |
parse(String source) | Date | 解析(字符串->日期对象) |
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo2 {public static void main(String[] args) throws ParseException {// 空参构造SimpleDateFormat sdf1 = new SimpleDateFormat();Date date = new Date(0L);System.out.println(sdf1.format(date));// 有参构造SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EE");String str = sdf2.format(date);System.out.println(str);// 字符串转时间Date parseDate = sdf2.parse(str);System.out.println(parseDate.getTime());}
}

三、Calendar
- Calendar代表系统当前时间的日历对象,可以单独修改、获取时间中的年月日。
- Calendar是一个抽象类,不能直接创建对象,需要用静态方法获取对象。
Calendar c = Calendar.getInstance();
- 常用方法:
方法名 | 返回类型 | 说明 |
---|
getTime() | Date | 获取日期对象 |
setTime(Date date) | void | 给日历设置日期对象 |
getTimeInMillis() | long | 拿到时间毫秒值 |
setTimeInMillis(long millis) | void | 给日历设置时间毫秒值 |
get(int field) | int | 获取日历中某个字段信息 |
set(int field, int value) | void | 修改日历中某个字段信息 |
add(int field, int amount) | void | 为某个字段增加/减少指定的值 |
- 注意事项:
- 日历类中月份范围:0~11
- 日历类中一周的第一天是星期日。
四、ZoneId
- ZoneId 表示时区。
- 常用方法(都是静态方法):
方法名 | 返回类型 | 说明 |
---|
getAvailableZoneIds() | Set | 获取Java中支持的所有时区 |
systemDefault() | ZoneId | 获取系统默认时区 |
of(String zoneId) | ZoneId | 获取一个指定时区(字符串转ZoneId对象) |
五、Instant
- Instant 表示时间戳。
- 常用方法:
方法名 | 返回类型 | 说明 |
---|
now() | Instant | 获取当前时间的Instant对象(标准时间) |
ofXXX(long epochMilli) | Instant | 根据(秒/毫秒/纳秒)获取Instant对象 |
atZone(ZoneId zone) | ZoneDateTime | 指定时区 |
isXXX(Instant otherInstant) | boolean | 判断时间的一系列方法 |
minusXXX(long millisToSubtract) | Instant | 减少时间的一系列方法 |
plusXXX(long millisToSubtract) | Instant | 增加时间的一系列方法 |
- 示例:
package day17.Instant;import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;public class Demo1 {public static void main(String[] args) {System.out.println("----获取当前时间----");Instant now = Instant.now();System.out.println(now);System.out.println("\n----根据(秒/毫秒/纳秒)获取Instant对象----");Instant second = Instant.ofEpochSecond(0L);Instant milli = Instant.ofEpochMilli(1L);Instant nano = Instant.ofEpochSecond(1L, 10000000000L);System.out.println(second);System.out.println(milli);System.out.println(nano);System.out.println("\n----指定时区----");ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneId.systemDefault());System.out.println(zonedDateTime);System.out.println("\n----isXXX判断----");boolean after = second.isAfter(nano);System.out.println(after);System.out.println("\n----minusXXX减少时间----");Instant minusSeconds = nano.minusSeconds(111);System.out.println(minusSeconds);}
}

六、ZoneDateTime
- ZoneDateTime 表示带时区的时间。
- 常用方法:
方法名 | 返回类型 | 说明 |
---|
now() | ZoneDateTime | 获取当前时间的ZoneDateTime对象 |
ofXXX(…) | ZoneDateTime | 获取指定时间的ZoneDateTime对象 |
withXXX(时间) | ZoneDateTime | 修改时间的一系列方法 |
minus(时间) | ZoneDateTime | 减少时间的一系列方法 |
plus(时间) | ZoneDateTime | 增加时间的一系列方法 |
七、DateTimeFormatter
- DateTimeFormatter 用于时间的格式化和解析
- 常用方法:
方法名 | 返回类型 | 说明 |
---|
ofPattern() | DateTimeFormatter | 获取格式化对象 |
format(时间对象) | String | 按照指定方式格式化时间 |
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;public class Demo1 {public static void main(String[] args) {// 获取时间对象ZonedDateTime now = ZonedDateTime.now();System.out.println(now);// 获取格式化对象DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss E a");String result = dtf.format(now);System.out.println(result);}
}

八、LocalDate、LocalTime、LocalDateTime
- 获取日历对象。
- LocalDate 只能获取年月日,LocalTime 只能获取时分秒。
- LocalDateTime 能获取所有信息。
- 常用方法:
方法名 | 说明 |
---|
now() | 获取当前时间的对象 |
ofXXX(…) | 获取指定时间的对象 |
getXXX | 获取日历中的年月日时分秒等信息 |
isXXX | 比较两个LocalDate |
withXXX | 修改时间的一系列方法 |
minusXXX | 减少时间的一系列方法 |
plusXXX | 增加时间的一系列方法 |
- LocalDateTime 转换
方法名 | 说明 |
---|
toLocalDate() | LocalDateTime转换成一个LocalDate |
toLocalTime() | LocalDateTime转换成一个LocalTime |
九、Duration、Period、ChronoUnit
- Duration 计算两个“时间”间隔(秒、纳秒)
- Period 计算两个“日期”间隔(年、月、日)
- ChronoUnit 计算两个“时间”间隔的所有单位(常用)
十、包装类
- 包装类:基本数据类型对应的对象。
- 八种基本数据类型对应的包装类中,除了Character都有其对应的parseXXX方法,进行类型转换。
- 自动装箱:把基本数据类型自动变成其对应的包装类。
Integer i1 = 10;
- 自动拆箱:把包装类自动变成其对应的基本数据类型。
int i = i1;