1.Date类
(1)Date类
Date类是一个JDK写好的javabean类,用来描述时间,精确到毫秒
(2)创建日期对象
1.利用空参构造创建的对象,默认表示系统当前时间
Date date = new Date();
2.利用有参构造创建的对象,表示指定的时间
Date date = new Date(指定毫秒值);
3.修改时间对象中的毫秒值
setTime(毫秒值);
4.获取时间对象中的毫秒值
getTime();
2.SimpleDateFormat类
(1)作用
1.格式化:把时间变成我们喜欢的格式
2.解析:把字符串表示的时间变成Date对象
(2)构造方法
1.public SimpleDateFormat():构造一个SimpleDateFormat,使用默认格式
2.public SimpleDateFoemat(String pattern):构造一个SimpleDateFormat,使用指定格式
(3)常用方法
1.public final String format(Date date):格式化(日期对象->字符串)
2.public Date parse(String source):解析(字符串->日期对象)
3.Calender类
(1)Calender类
1.Calender代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日
2.Calender是一个抽象类,不能直接创建对象
(2)获取Calender日历类对象的方法
1.pubulic static Calender getInstance():获取当前时间的日历对象
2.会根据系统的不同时区来获取不同的日历对象,默认表示当前时间
3.会把时间中的纪元,年,月,日,时,分,秒,星期等等放在一个数组中
4.月份:范围0~11,如果获取出来的是0,那么实际上是1月,以此类推
5.星期:星期日是一周的第一天如果获取出来的数据是1,那么实际上是星期日,以此类推
(3)Calender常用方法
1.public final Date getTime():获取日期对象
2.public final setTime(Date date):给日历设置日期对象
3.pubic long getTimeInMillis():拿到时间毫秒值
4.public void setTimeInMillis(Long millis):给日历设置时间毫秒值
5.public int get(int field):取日历中的某个字段信息
6.public void set(int field,int value)修改日历的某个字段的信息
7.public void add(int field,int amount):为某个字段增加/减少指定的值
4.JDK8新增的时间相关类
(1)JDK7与JDK8
1.JDK7:代码麻烦,多线程环境下会导致数据安全的问题
2.JDK8:代码相对简单,时间对象都是把不可变的,解决了多线程的问题
(2)Date类
1.ZoneId:时区
(1)static Set<String> getAvailableZoneIds():获取Java中支持的所有时区
(2)static ZoneId systemDafault():获取系统默认时区
(3)static ZoneId of(String zobeId):获取一个指定时区
2.Instant:时间戳,就是指特定的时间,不带时区,表示的是世界标准时间
(1)static Instant now():获取当前时间的Instant对象(标准时间,不带时区)
(2)static Instant ofXxx(long epochMilli):根据(秒/毫秒/纳秒)获取Instant对象
(3)ZonedDateTime atZone(ZoneId zone):指定时区
(4)Boolean isXxx(Instant otherInstant):判断系列的方法
(5)Instant minusXxx(long millisToSubtract):减少时间系列的方法
(6)Instant plusXxx(long nillisToSubtract):增加时间系列的方法
3.ZoneDateTime:带时区的时间
(1)static ZoneDateTime now():获取当前时间的ZoneDateTime对象
(2)static ZoneDateTime ofXxx(。。。):获取指定时间的ZoneDateTime对象
(3)ZoneDateTime withXxx(时间):修改时间系列的方法
(4)ZoneDateTime minusXxx(时间):减少时间系列的方法
(5)ZoneDateTime plusXxx(时间):增加时间系列的方法
(3)SimpleDateFormat(日期格式化类)
1.DateTimeFormatter:用于时间的格式化和解析
(1)static DateTimeFormatter ofPattern(格式):获取格式对象
(2)String format(时间对象):按照指定方式格式化
(4)Calender(日历类)
1.LocalDate:年、月、日
2.LocalTime:时、分、秒
3.LocalDateTime:年、月、日、时、分、秒
方法:
1.static XXX now():获取当前时间的对象
2.static XXX of(。。。):获取指定时间的对象
3.get开头的方法:获取日历中的年、月、日、时、分、秒等信息(LocalDate只能获取年月日,其他两个同理)
4.isBefore,isAfter:比较两个LocalDate
5.with开头的:修改时间系列的方法
6.minus开头的:减少时间系列的方法
7.plus开头的:增加时间系列的方法
8.public LocalDate toLocalDate():LocalDateTime转换成一个LocalDate对象
9.public LocalTime toLocaltime():LocalDateTime转换成一个LocalTime对象
(5)工具类
1.Duration:用于计算两个“时间”间隔(秒,纳秒)
(1)static Duration between(Temporal start, Temporal end):计算两个时间点之间的持续时间
(2)long toNanos():转换为纳秒
(3)long toMillis():转换为毫秒
(4)ong toSeconds():转换为秒
(5)long toMinutes():转换为分钟
(6)long toHours():转换为小时
(7)long toDays():转换为天
(8)Duration plus(Duration):持续时间相加
(9)Duration minus(Duration):持续时间相减
(10)boolean isNegative():检查是否为负值
(11)boolean isZero():检查是否为零
2.Perid:用于计算两个“日期”间隔(年,月,日)
(1)static Period between(LocalDate start, LocalDate end):计算两个日期之间的周
(2)int getYears():获取年数
(3)int getMonths():获取月数
(4)int getDays():获取天数
(5)Period plus(Period):周期相加
(6)Period minus(Period):周期相减
(7)boolean isNegative():检查是否为负值
(8)boolean isZero():检查是否为零
3.ChronoUnit:用于计算两个“日期”间隔(所有单位)
(1)long between(Temporal temporal1, Temporal temporal2)
LocalDateTime start = LocalDateTime.of(2023, 1, 1, 0, 0);
LocalDateTime end = LocalDateTime.now();
long days = ChronoUnit.DAYS.between(start, end);
long hours = ChronoUnit.HOURS.between(start, end);