一、时间类
- jdk1.0 Date 不支持时区
- java.util.Date
- java.text.SimpleDateFormat
- jdk1.1 Calendar 日历类 不安全
- java.util.Calendar
- jdk1.8 LocalDate年月日/LocalTime时分秒/LocalDateTime年月日+时分秒 【时区+安全】
- java.time.LocalDate/LocalDateTime/LocalTime
- java.time.format.DateTimeFormatter
- java.time.Duration
1、Date 不支持时区
1 获取系统当前时间
Date now = new Date();
2 Date <=> long 毫秒数
long time = Date对象.getTime();
Date dd = new Date(long 毫秒数);
3 日期格式化 [Date - SimpleDateFormat]
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Date => String
String str = sdf.format(Date对象);
// String => Date
String s1 = "2001-10-01 11:22:33";
Date d1 = sdf.parse(s1);// throws ParseException
2、Calendar 不安全
Calendar 抽象类 肯定不能直接创建对象
1 获取Calendar对象
Calendar cc = Calendar.getInstance();
字段 值
YEAR 1
MONTH 2 【get(2)+1】
DAY_OF_MONTH 5
DAY_OF_WEEK 7 【get(7)-1】
HOUR_OF_DAY 11 【24小时制】
MINUTE 12
SECOND 13
2 获取某一个字段的内容
int get(int 字段);
3 修改某一个字段的内容 【不需要接收,调用方法直接改变】
3.1 修改成指定的值
Calendar对象.set(int字段,int值);
3.2 添加/减少
Calendar对象.add(int字段,正数); // 添加
Calendar对象.add(int字段,负数); // 减少
4 日期格式化【Calendar => Date => 格式化Date => String】
4.1 Calendar => Date
Date dd = Calendar对象.geTime();
4.2 Date => String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(dd);
3、LocalDate LocalTime LocalDateTime 【支持时区+安全】
1、 获取LocalDate对象
// 当前
LocalDate ld = LocalDate.now();
// 指定
LocalDate ld = LocalDate.of(年,月,日);
// 最短:LocalDateTime ldt = LocalDateTime.of(年,月,日,时,分钟)
2 、获取某一个字段
LocalDate对象.getYear() => int
LocalDate对象.getMonth() => enum Month()
LocalDate对象.getMonthValue() => int
LocalDate对象.getMonth().getValue() => int
LocalDate对象.getDayOfMonth() => int
LocalDate对象.getDayOfWeek() => enum DayOfWeek{}
LocalDate对象.getDayOfWeek().getValue() => int
// LocalDateTime对象 getHour() [24小时制] getMinute() getSecond()
3、 修改 [需要接收!!!]
3.1 指定
LocalDate ld = LocalDate对象.withXxx(long 值);
3.2 添加/减少
// plusYears() plusMonths() plusDays()
LocalDate ld = LocalDate对象.plusXxxs(long 值);
LocalDate ld = LocalDate对象.minusXxxs(long 值);
4 、日期格式化
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// LocalDate => String
String str = dtf.format(LocalDate对象);
// String => LocalDate
LocalDate ld = LocalDate.parse(String内容,dtf);
// String => LocalDateTime
// 格式化器 =》 yyyy-MM-dd HH:mm:ss
// LocalDateTime ldt = LocalDateTime.parse(字符串,格式化器);
5、 判断时间的先后
时间1.isBefore(时间2) 判断 时间1是否在时间2之前
时间1.isAfter(时间2)判断 时间1是否在时间2之后
6、LocalDate特有的方法
1 判断是否是闰年
boolean flag = LocalDate对象.isLeapYear();
2 获取某个月份多少天
int days = LocalDate对象.lengthOfMonth();
3 获取某一年多少天
int days = LocalDate对象.lengthOfYear();
LocalDateTime l01 = LocalDateTime.now();
LocalDateTime l02 = LocalDateTime.of(2035,10,1,14,56,12);
// 两个时间的差 【时间需要有“秒”】
// l02 - l01
Duration dd = Duration.between(l01,l02);
// 天数/小时/分钟/秒 =》 返回类型都是long
dd.toDays() / dd.toHours() / dd.toMinutes() / dd.toSeconds()//用这些方法接时间差,统一单位