文章目录
1、date
该类表示时间:
Date date = new Date() //当前时间
Date d2 = new Date(3600*1000) //1970年1月1日1点-从时间原点(1970年1月1日0点0分0秒)开始一个小时
date.setTime() //设置时间
date.getTime() //获取时间毫秒值
date.after(d2) //判断date是否在d2之后
date.before(d2) //判断date是否在d2之前
date.compareTo(d2) //时间相同返回0,不相同分别返回1和-1
date.equals(d2) //比较两个时间是否相同
2、SimpleDateFormat
用于格式化时间:
SimpleDateFormat sdf = new SimpleDateFormat() // 默认格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss") //指定格式
// (y年 M月 d日 H时 m分 s秒)
String date = sdf.format(new Date()); //根据格式格式化当前时间返回字符串
Date d = sdf.parse(date); //解析时间,格式需要保持一致
3、Calendar
表示日历:
Calendar c = Calendar.getInstance(); //获取当前时间日历对象
c.getTime() // 获取日期对象
c.setTime() //设置日历对象
c.getTimeInMillis() //获取日期毫秒值
c.setTimeInMillis() //通过毫秒值设置日期
c.get(1) //获取日期数组中的数据(月份为0-11)
// (0纪元 1年 2月 5日)可用calendar中的常量
c.set(1,2050) //把年修改为2050
c.add(1,-10) //日期计算,增加或减小,减少10年
4、 ZoneId
时区:
//获取所有时区名称,中国使用(Asia/shanghai)
Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();
// 获取系统默认时区
ZoneId defaultZoneId = ZoneId.systemDefault();
//获取指定时区对象
ZoneId shanghai = ZoneId.of("Asia/Shanghai");
5、Instance
时间戳:
Instance.now() //获取当前标准时间时间戳
// 获取指定时间的时间戳对象
Instant ofEpochMilli = Instant.ofEpochMilli(1000L);
Instant ofEpochSecond = Instant.ofEpochSecond(1000L);
//获取指定时区时间戳
ZonedDateTime now = Instant.now().atZone(shanghai);
// 比较两个时间先后
Instant now = Instant.now();
Instant yuandian = Instant.ofEpochMilli(0L);
//now是否在yuandian之前
boolean isafter = now.isAfter(yuandian);
//now是否在yuandian之后
boolean isbefore = now.isBefore(yuandian);
//now是否和yaundian相等
now.equals(yuandian)
// 时间计算
Instant minus = now.minus(1, ChronoUnit.YEARS);//-1年
Instant plus = now.plus(1,ChronoUnit.YEARS);//+1年
6、ZonedDateTime
带时区的时间:
// 获取当前带时区的时间
ZonedDateTime now = ZonedDateTime.now();
//获取指定带时区的时间,也可通过重载方法直接指定年月日时分秒时区获取
ZonedDateTime.of(LocalDateTime.now(), ZoneId.of("Asia/Shanghai"));
// 修改
now.withYear(2000);
now.withMonth(5);
// 减少
ZonedDateTime minus = now.minus(1, ChronoUnit.YEARS);//-1年
//增加
ZonedDateTimeplus = now.plus(1,ChronoUnit.YEARS);//+1年
ZonedDateTime.from() //转换父接口类型为ZonedDateTime类型
7、DateTimeFormatter
ZonedDateTime now = ZonedDateTime.now();
//XXX表示时区
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss XXX");
String date = dtf.format(now); // 格式化时包含时区信息
TemporalAccessor accessor = dtf.parse(date); // 解析包含时区信息的日期时间字符串
// 将 TemporalAccessor 转换为 ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.from(accessor);
8. LocalDate,LocalTime,LocalDateTime
分别表示:日期,时间,日期时间,很多操作方法类似
//获取当前日期时间,日期,时间
LocalDateTime now = LocalDateTime.now();
LocalDate nowDate = LocalDate.now();
LocalTime nowTime = LocalTime.now();
// 获取时间日期类
now.getYear();
now.getMonth();
now.getDayOfMonth();
//计算
now.minusYears(1);
now.plusYears(1);
// 转换
LocalDate date = now.toLocalDate();
LocalTime localTime = now.toLocalTime();
//判断时间日期
now.isAfter(now)
now.isBefore(now)